profile
viewpoint
Justin Kambic justinkambic @elastic Pennsylvania, United States The majority of my commits go to repo:elastic/kibana. I also like to tinker with side projects in my limited spare time.

justinkambic/free-blur 1

iPhone app designed to allow users to simply blur faces for free, without requiring a 5⭐ review.

justinkambic/react-signalr-demo 1

Demonstrates react.js working with SignalR.

andrewvc/kibana 0

:bar_chart: Kibana analytics and search dashboard for Elasticsearch

justinkambic/apm-integration-testing 0

APM Integration Testing

justinkambic/beats 0

:tropical_fish: Beats - Lightweight shippers for Elasticsearch & Logstash

justinkambic/camelizer 0

Uses camelize to change all keys of an object and any nested object to camelCase.

justinkambic/code-jam-2017 0

Contains my working solutions to the problems I've completed in Google Code Jam 2017. Just for fun!

justinkambic/d3-ng2-service 0

A D3 version 4 service for use with Angular 2+.

justinkambic/dreng 0

Simple draughts engine.

issue openedelastic/synthetics

Identify the Synthetic Agent as a Browser Type RUM

This specifically covers traffic generated by the Synthetic Agent, and does not for example include HTTP Ping hits from Heartbeat

As an Elastic Observability User I want to be able to identify Synthetic traffic in the User Experience reporting So that I can look at how real users vary compared with my Synthetic baseline And I can exclude Synthetic monitors and see if they are skewing my performance data (subject to this)

Acceptance criteria

  • Any interactions by the Synthetic Agent to my website that is being monitored by the RUM Agent, can be distinguished from other organic traffic to the website
  • I can select the “Synthetic Agent” as a variety of browser in the reporting (e.g. browser filter, page load distribution breakdown)
  • Similarly, traffic from the Synthetic Agent will be categorised as the device type of ‘bot’ (may need some additional work around https://github.com/elastic/elasticsearch/issues/65057 to support this)

created time in 9 hours

push eventelastic/synthetics

Vignesh Shanmugam

commit sha a3a1427fb4d955ec42ee53d4467a8cbec7bad141

chore: disallow auto update of chrome browser (#150)

view details

push time in 10 hours

Pull request review commentelastic/synthetics

chore: disallow auto update of chrome browser

   "dependencies": {     "commander": "^6.0.0",     "kleur": "^4.1.1",-    "playwright-chromium": "^1.6.2",+    "playwright-chromium": "=1.6.2",

Its part of semver https://github.com/npm/node-semver

vigneshshanmugam

comment created time in 10 hours

Pull request review commentelastic/synthetics

chore: disallow auto update of chrome browser

   "dependencies": {     "commander": "^6.0.0",     "kleur": "^4.1.1",-    "playwright-chromium": "^1.6.2",+    "playwright-chromium": "=1.6.2",

Just specifying the exact version would pin the version. I wasn't sure about the = syntax since it's not mentioned in the npm docs.

    "playwright-chromium": "1.6.2",
vigneshshanmugam

comment created time in 10 hours

issue closedelastic/synthetics

Add E2E Test Suite / Example

We should write a test suite using this framework that validates that the integration between Synthetics / Heartbeat / ES / Kibana all works together. We can run the examples in this repo for this, and orchestrate using docker compose.

closed time in 11 hours

andrewvc

issue commentelastic/synthetics

Add E2E Test Suite / Example

Done with #148 #116

andrewvc

comment created time in 11 hours

Pull request review commentelastic/synthetics

ci: run e2e tests

 def cleanup(){   unstash 'source' } -def withNodeEnv(Map args=[:], Closure body){+def withNodeInDockerEnv(Map args=[:], Closure body){   docker.image("${NODE_DOCKER_IMAGE}").inside(" --security-opt seccomp=${SECCOMP_FILE}"){     withEnv(["HOME=${WORKSPACE}"]) {       body()     }   } } +def withNodeEnv(Map args=[:], Closure body){+  withEnv(["HOME=${WORKSPACE}"]) {+    sh(label: 'install Node.js', script: '''+      set +x+      if [ -z "$(command -v nvm)" ]; then+        curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.1/install.sh | bash+      fi++      export NVM_DIR="${HOME}/.nvm"+      [ -s "${NVM_DIR}/nvm.sh" ] && \\. "${NVM_DIR}/nvm.sh"+      nvm install --lts

better to test it on the version we use in synthetics image https://github.com/elastic/synthetics/blob/1375d46e600f7cdd273304cdbc5a1741f1d4431e/Dockerfile#L27

kuisathaverat

comment created time in 11 hours

push eventelastic/synthetics

Ivan Fernandez Calvo

commit sha 1375d46e600f7cdd273304cdbc5a1741f1d4431e

ci: run e2e tests (#148) It adds a stage to run the e2e teste

view details

push time in 12 hours

PR merged elastic/synthetics

ci: run e2e tests ci team:automation

It adds a stage to run the e2e teste

+60 -19

7 comments

4 changed files

kuisathaverat

pr closed time in 12 hours

pull request commentelastic/synthetics

ci: run e2e tests

I will grab the logs of the containers for debugging issues in a followup PR

kuisathaverat

comment created time in 12 hours

pull request commentelastic/synthetics

chore: disallow auto update of chrome browser

yeah patch versions also updates the browser https://github.com/microsoft/playwright/releases which would be an issue for us as it would trigger removing the old browser version in favor of new one. So, we need to stick with exact match.

vigneshshanmugam

comment created time in 12 hours

pull request commentelastic/synthetics

ci: run e2e tests

Awesome and quick work !!

kuisathaverat

comment created time in 12 hours

pull request commentelastic/synthetics

chore: disallow auto update of chrome browser

:green_heart: Build Succeeded

<!-- BUILD BADGES-->

the below badges are clickable and redirect to their specific view in the CI or DOCS Pipeline View Test View Changes Artifacts preview

<!-- BUILD SUMMARY--> <details><summary>Expand to view the summary</summary> <p>

Build stats

  • Build Cause: Pull request #150 opened

  • Start Time: 2020-11-26T11:01:21.813+0000

  • Duration: 16 min 14 sec

Test stats :test_tube:

Test Results
Failed 0
Passed 45
Skipped 0
Total 45

</p> </details>

<!-- TEST RESULTS IF ANY-->

<!-- STEPS ERRORS IF ANY-->

<!--COMMENT_GENERATED_WITH_ID_comment.id-->

vigneshshanmugam

comment created time in 14 hours

Pull request review commentelastic/synthetics

feat: add browser service to launch browsers

+/**+ * MIT License+ *+ * Copyright (c) 2020-present, Elastic NV+ *+ * Permission is hereby granted, free of charge, to any person obtaining a copy+ * of this software and associated documentation files (the "Software"), to deal+ * in the Software without restriction, including without limitation the rights+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+ * copies of the Software, and to permit persons to whom the Software is+ * furnished to do so, subject to the following conditions:+ *+ * The above copyright notice and this permission notice shall be included in+ * all copies or substantial portions of the Software.+ *+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+ * THE SOFTWARE.+ *+ */++import { URL } from 'url';+import { createServer } from 'http';+import { createProxyServer } from 'http-proxy';+import { chromium } from 'playwright-chromium';++const proxy = createProxyServer();+const proxyServer = createServer();++proxyServer.on('upgrade', async function (req, socket, head) {+  const browserServer = await chromium.launchServer({ headless: true });+  const wsEndpoint = browserServer.wsEndpoint();+  const { pathname, origin } = new URL(wsEndpoint);+  req.url = pathname;+  console.log(`New browser: ${wsEndpoint}`);+  proxy.ws(req, socket, head, { target: origin });

Yeah ++

jahtalab

comment created time in 14 hours

PR opened elastic/synthetics

chore: disallow auto update of chrome browser
  • This is a follow up of #142 and allows us to control the update of playwright effectively browsers to tie it with the proper version. Having ^ or ~ would allow minor/patch versions to be installed on user's machine/test environments if lockfiles are not taken in to account.
+1 -1

0 comment

1 changed file

pr created time in 14 hours

push eventelastic/synthetics

Hamid

commit sha 2356672ec095a6b14618101adeda33aee45dbdd6

feat: add browser service to launch browsers (#146) * feat: add browser service to launch browsers * chore: handle socket error event * chore: use URL to parse endpoint

view details

push time in 14 hours

PR merged elastic/synthetics

Reviewers
feat: add browser service to launch browsers

This PR adds a browser service that can be used to launch browser on demand. It also adds --ws-endpoint option for the cli.

  • To run the browser service simply run the JS file: node dist/browser-service.js
  • To point the tests to use the browser service: node dist/cli.js examples/todos/ --ws-endpoint=ws://localhost:9322
+100 -4

6 comments

7 changed files

jahtalab

pr closed time in 14 hours

Pull request review commentelastic/synthetics

feat: add browser service to launch browsers

+/**+ * MIT License+ *+ * Copyright (c) 2020-present, Elastic NV+ *+ * Permission is hereby granted, free of charge, to any person obtaining a copy+ * of this software and associated documentation files (the "Software"), to deal+ * in the Software without restriction, including without limitation the rights+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+ * copies of the Software, and to permit persons to whom the Software is+ * furnished to do so, subject to the following conditions:+ *+ * The above copyright notice and this permission notice shall be included in+ * all copies or substantial portions of the Software.+ *+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+ * THE SOFTWARE.+ *+ */++import { URL } from 'url';+import { createServer } from 'http';+import { createProxyServer } from 'http-proxy';+import { chromium } from 'playwright-chromium';++const proxy = createProxyServer();+const proxyServer = createServer();++proxyServer.on('upgrade', async function (req, socket, head) {+  const browserServer = await chromium.launchServer({ headless: true });+  const wsEndpoint = browserServer.wsEndpoint();+  const { pathname, origin } = new URL(wsEndpoint);+  req.url = pathname;+  console.log(`New browser: ${wsEndpoint}`);+  proxy.ws(req, socket, head, { target: origin });

I think I tried that but didn't work, but we'll have another look for the final version.

jahtalab

comment created time in 14 hours

Pull request review commentelastic/synthetics

feat: add browser service to launch browsers

+/**+ * MIT License+ *+ * Copyright (c) 2020-present, Elastic NV+ *+ * Permission is hereby granted, free of charge, to any person obtaining a copy+ * of this software and associated documentation files (the "Software"), to deal+ * in the Software without restriction, including without limitation the rights+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+ * copies of the Software, and to permit persons to whom the Software is+ * furnished to do so, subject to the following conditions:+ *+ * The above copyright notice and this permission notice shall be included in+ * all copies or substantial portions of the Software.+ *+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+ * THE SOFTWARE.+ *+ */++/* eslint-disable @typescript-eslint/no-var-requires */++const httpProxy = require('http-proxy');+const http = require('http');+const { chromium } = require('playwright-chromium');++const proxy = httpProxy.createProxyServer();+const proxyServer = http.createServer();++proxyServer.on('upgrade', async function (req, socket, head) {+  const browserServer = await chromium.launchServer({ headless: true });

We haven't decided it, but It doesn't make a difference for the POC and adding the option is easy to do later on.

jahtalab

comment created time in 14 hours

push eventelastic/synthetics

Vignesh Shanmugam

commit sha d0670a77b09c2a483c88a3fa7209e949d86c0a01

fix: sync browser version in docker and examples (#147)

view details

push time in 14 hours

PR merged elastic/synthetics

Reviewers
fix: sync browser version in docker and examples [zube]: In Review
  • fix #142
  • Forcefully reinstalls our @elastic/synthetics package by ignoring the cache incase any versions have changed. We have not used the docker build --no-cache as it will also clear out other dependency caches
  • By having the latest version on both official docker image and examples pointing to the latest published version. We synchronise the playwright versions inside the docker image and do not have a broken state.
  • We can also remove the intermin solution that is put inside the heartbeat code https://github.com/elastic/beats/blob/heartbeat-synthetics/x-pack/heartbeat/monitors/browser/synthexec/synthexec.go#L57 as the problem is not related to playwright being available instead a broken state.

Steps to test this flow.

// remove the previous docker image if you want to test in a clean environment
docker rmi heartbeat-synthetics-local
npm run docker 
cd examples/docker
./run-build-local.sh -E output.console={}
+7 -6

2 comments

4 changed files

vigneshshanmugam

pr closed time in 14 hours

issue closedelastic/synthetics

Run Playwright post-install script to fix chrome binary sometimes unavailable

It seems that sometimes the synthetics package can get into a state where our code runs, but the version of the playwright library used references a chrome version that is not installed. @paulb-elastic got his system in such a state once, but we couldn't repro it.

My hunch is this can happen on only some systems after playwright releases a new version. I'm somewhat unsure beyond that, since my system can't repro this.

My hunch is that it would be a good thing to run the playwright post-install script on each run to ensure that the chrome binary is present, and attempt download if not. I can't think of a reason not to try downloading it vs. a straight-up failure.

This only seems to happen with npx running a globally installed package. For a local project this circumstance can be fixed with npm i && npm install playwright. See https://github.com/microsoft/playwright/issues/3712 for more context on that situation

closed time in 14 hours

andrewvc

pull request commentelastic/synthetics

fix: sync browser version in docker and examples

Will revisit later with better alternatives if we decide to do docker cache cleanup at some point for building new images.

vigneshshanmugam

comment created time in 14 hours

Pull request review commentelastic/synthetics

feat: add browser service to launch browsers

+/**+ * MIT License+ *+ * Copyright (c) 2020-present, Elastic NV+ *+ * Permission is hereby granted, free of charge, to any person obtaining a copy+ * of this software and associated documentation files (the "Software"), to deal+ * in the Software without restriction, including without limitation the rights+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+ * copies of the Software, and to permit persons to whom the Software is+ * furnished to do so, subject to the following conditions:+ *+ * The above copyright notice and this permission notice shall be included in+ * all copies or substantial portions of the Software.+ *+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+ * THE SOFTWARE.+ *+ */++import { URL } from 'url';+import { createServer } from 'http';+import { createProxyServer } from 'http-proxy';+import { chromium } from 'playwright-chromium';++const proxy = createProxyServer();+const proxyServer = createServer();++proxyServer.on('upgrade', async function (req, socket, head) {+  const browserServer = await chromium.launchServer({ headless: true });+  const wsEndpoint = browserServer.wsEndpoint();+  const { pathname, origin } = new URL(wsEndpoint);+  req.url = pathname;+  console.log(`New browser: ${wsEndpoint}`);+  proxy.ws(req, socket, head, { target: origin });

why not pass the full url object? Thought proxy lib supports that option.

jahtalab

comment created time in 14 hours

Pull request review commentelastic/synthetics

feat: add browser service to launch browsers

+/**+ * MIT License+ *+ * Copyright (c) 2020-present, Elastic NV+ *+ * Permission is hereby granted, free of charge, to any person obtaining a copy+ * of this software and associated documentation files (the "Software"), to deal+ * in the Software without restriction, including without limitation the rights+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+ * copies of the Software, and to permit persons to whom the Software is+ * furnished to do so, subject to the following conditions:+ *+ * The above copyright notice and this permission notice shall be included in+ * all copies or substantial portions of the Software.+ *+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+ * THE SOFTWARE.+ *+ */++/* eslint-disable @typescript-eslint/no-var-requires */++const httpProxy = require('http-proxy');+const http = require('http');+const { chromium } = require('playwright-chromium');++const proxy = httpProxy.createProxyServer();+const proxyServer = http.createServer();++proxyServer.on('upgrade', async function (req, socket, head) {+  const browserServer = await chromium.launchServer({ headless: true });

I am not sure if we want to do headless: true, Did we already decide on this, Not able to find any relevant discussion? Running in headless mode would not get some of the performance metrics. I am okay leaving it for now, but its not only for testing/local dev. Ideally we should support both modes and by default should be run on non-headless mode as it allows for capturing more perf metrics.

jahtalab

comment created time in 14 hours

pull request commentelastic/synthetics

feat: add browser service to launch browsers

Thanks @paulb-elastic , I've added a task for adding the tests once we have decided on the approach in the original issue.

jahtalab

comment created time in 15 hours

Pull request review commentelastic/synthetics

feat: add browser service to launch browsers

+/**+ * MIT License+ *+ * Copyright (c) 2020-present, Elastic NV+ *+ * Permission is hereby granted, free of charge, to any person obtaining a copy+ * of this software and associated documentation files (the "Software"), to deal+ * in the Software without restriction, including without limitation the rights+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+ * copies of the Software, and to permit persons to whom the Software is+ * furnished to do so, subject to the following conditions:+ *+ * The above copyright notice and this permission notice shall be included in+ * all copies or substantial portions of the Software.+ *+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+ * THE SOFTWARE.+ *+ */++/* eslint-disable @typescript-eslint/no-var-requires */++const httpProxy = require('http-proxy');+const http = require('http');+const { chromium } = require('playwright-chromium');++const proxy = httpProxy.createProxyServer();+const proxyServer = http.createServer();++proxyServer.on('upgrade', async function (req, socket, head) {+  const browserServer = await chromium.launchServer({ headless: true });

Primarily we want to run this service with headless: true flag, but for testing and local development it might be useful to have the option, but let's add these after the POC phase.

jahtalab

comment created time in 15 hours

Pull request review commentelastic/synthetics

ci: run e2e tests

 pipeline {       }     } +    stage('E2e Test') {+      steps {+        withGithubNotify(context: 'E2e Test') {+          cleanup()+          withNodeEnv(){+            dir("${BASE_DIR}"){+              sh(label: 'install dependencies',script: 'npm i')

actually, in the pipeline, I can rid of it because we make the npm install at the beginning and we stash the sources and dependencies to use them across the stages.

kuisathaverat

comment created time in a day

pull request commentelastic/synthetics

ci: run e2e tests

it was tough but it works now

kuisathaverat

comment created time in a day

pull request commentelastic/synthetics

ci: run e2e tests

after enabling --environment container I have more data

synthetics       | 2020-11-25T19:30:10.914Z	INFO	instance/beat.go:645	Home path: [/usr/share/heartbeat] Config path: [/usr/share/heartbeat] Data path: [/usr/share/heartbeat/data] Logs path: [/usr/share/heartbeat/logs]
synthetics       | 2020-11-25T19:30:10.920Z	INFO	instance/beat.go:653	Beat ID: e59132b6-1696-48f4-ab04-0e54aa436595
synthetics       | 2020-11-25T19:30:10.920Z	INFO	[beat]	instance/beat.go:981	Beat info	{"system_info": {"beat": {"path": {"config": "/usr/share/heartbeat", "data": "/usr/share/heartbeat/data", "home": "/usr/share/heartbeat", "logs": "/usr/share/heartbeat/logs"}, "type": "heartbeat", "uuid": "e59132b6-1696-48f4-ab04-0e54aa436595"}}}
synthetics       | 2020-11-25T19:30:10.920Z	INFO	[beat]	instance/beat.go:990	Build info	{"system_info": {"build": {"commit": "a0f845abd970614e624588ff46bda0095fbed814", "libbeat": "7.10.0", "time": "2020-11-05T23:07:08.000Z", "version": "7.10.0"}}}
synthetics       | 2020-11-25T19:30:10.921Z	INFO	[beat]	instance/beat.go:993	Go runtime info	{"system_info": {"go": {"os":"linux","arch":"amd64","max_procs":4,"version":"go1.14.7"}}}
synthetics       | 2020-11-25T19:30:10.922Z	INFO	[beat]	instance/beat.go:997	Host info	{"system_info": {"host": {"architecture":"x86_64","boot_time":"2020-11-25T18:29:21Z","containerized":true,"name":"310f7a894acb","ip":["127.0.0.1/8","172.23.0.3/16"],"kernel_version":"5.4.0-1029-gcp","mac":["02:42:ac:17:00:03"],"os":{"family":"redhat","platform":"centos","name":"CentOS Linux","version":"7 (Core)","major":7,"minor":8,"patch":2003,"codename":"Core"},"timezone":"UTC","timezone_offset_sec":0,"id":"42ce656e21e705a9f1fe331a4a1a6a9a"}}}
synthetics       | 2020-11-25T19:30:10.922Z	INFO	[beat]	instance/beat.go:1026	Process info	{"system_info": {"process": {"capabilities": {"inheritable":["chown","dac_override","fowner","fsetid","kill","setgid","setuid","setpcap","net_bind_service","net_raw","sys_chroot","mknod","audit_write","setfcap"],"permitted":["net_raw"],"effective":["net_raw"],"bounding":["chown","dac_override","fowner","fsetid","kill","setgid","setuid","setpcap","net_bind_service","net_raw","sys_chroot","mknod","audit_write","setfcap"],"ambient":null}, "cwd": "/usr/share/heartbeat", "exe": "/usr/share/heartbeat/heartbeat", "name": "heartbeat", "pid": 7, "ppid": 1, "seccomp": {"mode":"filter","no_new_privs":false}, "start_time": "2020-11-25T19:30:09.970Z"}}}
synthetics       | 2020-11-25T19:30:10.922Z	INFO	instance/beat.go:299	Setup Beat: heartbeat; Version: 7.10.0
synthetics       | 2020-11-25T19:30:10.922Z	INFO	[index-management]	idxmgmt/std.go:184	Set output.elasticsearch.index to 'heartbeat-7.10.0' as ILM is enabled.
synthetics       | 2020-11-25T19:30:10.923Z	INFO	eslegclient/connection.go:99	elasticsearch url: http://elasticsearch:9200
synthetics       | 2020-11-25T19:30:10.923Z	INFO	[publisher]	pipeline/module.go:113	Beat name: 310f7a894acb
synthetics       | 2020-11-25T19:30:10.923Z	INFO	instance/beat.go:455	heartbeat start running.
synthetics       | 2020-11-25T19:30:10.924Z	INFO	beater/heartbeat.go:83	Please note, this is an experimental, unsupported version of heartbeat for the purpose of demonstrating synthetic journeys!
synthetics       | 2020-11-25T19:30:10.924Z	INFO	beater/heartbeat.go:84	heartbeat is running! Hit CTRL-C to stop it.
synthetics       | 2020-11-25T19:30:10.923Z	INFO	[monitoring]	log/log.go:118	Starting metrics logging every 30s
synthetics       | 2020-11-25T19:30:10.924Z	INFO	monitors/factory.go:108	Client connection with: beat.ClientConfig{PublishMode:0x0, Processing:beat.ProcessingConfig{EventMetadata:common.EventMetadata{Fields:null, FieldsUnderRoot:false, Tags:[]string(nil)}, Meta:null, Fields:null, DynamicFields:(*common.MapStrPointer)(nil), Processor:beat.ProcessorList(nil), KeepNull:false, DisableHost:false, Private:interface {}(nil)}, CloseRef:beat.CloseRef(nil), WaitClose:0, ACKHandler:beat.ACKer(nil), Events:beat.ClientEventer(nil)}
synthetics       | 2020-11-25T19:30:10.925Z	WARN	beater/heartbeat.go:183	Listing suite%!(EXTRA string=/opt/elastic-synthetics/examples/todos)
synthetics       | 2020-11-25T19:30:10.925Z	INFO	synthexec/synthexec.go:322	Running /usr/share/heartbeat/.node/node/bin/npm install in /opt/elastic-synthetics/examples/todos
synthetics       | 2020-11-25T19:30:10.930Z	INFO	synthexec/synthexec.go:174	Running command: /usr/share/heartbeat/.node/node/bin/elastic-synthetics --inline --screenshots --json --network --outfd 3 in directory: ''
synthetics       | 2020-11-25T19:30:10.934Z	INFO	cfgfile/reload.go:164	Config reloader started
synthetics       | 2020-11-25T19:30:10.935Z	INFO	cfgfile/reload.go:224	Loading of config files completed.
synthetics       | 2020-11-25T19:30:11.945Z	INFO	[publisher_pipeline_output]	pipeline/output.go:143	Connecting to backoff(elasticsearch(http://elasticsearch:9200))
synthetics       | 2020-11-25T19:30:11.945Z	INFO	[publisher]	pipeline/retry.go:219	retryer: send unwait signal to consumer
synthetics       | 2020-11-25T19:30:11.946Z	INFO	[publisher]	pipeline/retry.go:223	  done
synthetics       | 2020-11-25T19:30:13.246Z	ERROR	[publisher_pipeline_output]	pipeline/output.go:154	Failed to connect to backoff(elasticsearch(http://elasticsearch:9200)): Get "http://elasticsearch:9200": dial tcp 172.23.0.2:9200: connect: connection refused
synthetics       | 2020-11-25T19:30:13.247Z	INFO	[publisher_pipeline_output]	pipeline/output.go:145	Attempting to reconnect to backoff(elasticsearch(http://elasticsearch:9200)) with 1 reconnect attempt(s)
synthetics       | 2020-11-25T19:30:13.248Z	INFO	[publisher]	pipeline/retry.go:219	retryer: send unwait signal to consumer
synthetics       | 2020-11-25T19:30:13.252Z	INFO	[publisher]	pipeline/retry.go:223	  done
synthetics       | 2020-11-25T19:30:16.916Z	ERROR	[publisher_pipeline_output]	pipeline/output.go:154	Failed to connect to backoff(elasticsearch(http://elasticsearch:9200)): Get "http://elasticsearch:9200": dial tcp 172.23.0.2:9200: connect: connection refused
synthetics       | 2020-11-25T19:30:16.916Z	INFO	[publisher_pipeline_output]	pipeline/output.go:145	Attempting to reconnect to backoff(elasticsearch(http://elasticsearch:9200)) with 2 reconnect attempt(s)
synthetics       | 2020-11-25T19:30:16.917Z	INFO	[publisher]	pipeline/retry.go:219	retryer: send unwait signal to consumer
synthetics       | 2020-11-25T19:30:16.917Z	INFO	[publisher]	pipeline/retry.go:223	  done
synthetics       | 2020-11-25T19:30:19.232Z	INFO	synthexec/synthexec.go:324	Ran /usr/share/heartbeat/.node/node/bin/npm install got npm WARN checkPermissions Missing write access to /opt/elastic-synthetics/examples/todos
synthetics       | npm ERR! code EACCES
synthetics       | npm ERR! syscall access
synthetics       | npm ERR! path /opt/elastic-synthetics/examples/todos
synthetics       | npm ERR! errno -13
synthetics       | npm ERR! Error: EACCES: permission denied, access '/opt/elastic-synthetics/examples/todos'
synthetics       | npm ERR!  [Error: EACCES: permission denied, access '/opt/elastic-synthetics/examples/todos'] {
synthetics       | npm ERR!   errno: -13,
synthetics       | npm ERR!   code: 'EACCES',
synthetics       | npm ERR!   syscall: 'access',
synthetics       | npm ERR!   path: '/opt/elastic-synthetics/examples/todos'
synthetics       | npm ERR! }
synthetics       | npm ERR! 
synthetics       | npm ERR! The operation was rejected by your operating system.
synthetics       | npm ERR! It is likely you do not have the permissions to access this file as the current user
synthetics       | npm ERR! 
synthetics       | npm ERR! If you believe this might be a permissions issue, please double-check the
synthetics       | npm ERR! permissions of the file and its containing directories, or try running
synthetics       | npm ERR! the command again as root/Administrator.
synthetics       | 
synthetics       | npm ERR! A complete log of this run can be found in:
synthetics       | npm ERR!     /usr/share/heartbeat/.npm/_logs/2020-11-25T19_30_19_137Z-debug.log
synthetics       | 
synthetics       | 2020-11-25T19:30:19.232Z	INFO	cfgfile/reload.go:227	Dynamic config reloader stopped
synthetics       | 2020-11-25T19:30:19.241Z	INFO	[monitoring]	log/log.go:153	Total non-zero metrics	{"monitoring": {"metrics": {"beat":{"cgroup":{"cpu":{"id":"310f7a894acb3bd4934d572160a38059bc2749c96726b48c6f307670b9293b12"},"cpuacct":{"id":"310f7a894acb3bd4934d572160a38059bc2749c96726b48c6f307670b9293b12"},"memory":{"id":"310f7a894acb3bd4934d572160a38059bc2749c96726b48c6f307670b9293b12"}},"cpu":{"system":{"ticks":20,"time":{"ms":25}},"total":{"ticks":90,"time":{"ms":100},"value":90},"user":{"ticks":70,"time":{"ms":75}}},"handles":{"limit":{"hard":1048576,"soft":1048576},"open":12},"info":{"ephemeral_id":"4fa55a26-d0cd-4a05-bd76-1284c326bdfd","uptime":{"ms":8367}},"memstats":{"gc_next":19567392,"memory_alloc":10522728,"memory_total":16995504,"rss":48386048},"runtime":{"goroutines":17}},"heartbeat":{"browser":{"endpoint_starts":1,"monitor_starts":1},"scheduler":{"jobs":{"active":1},"tasks":{"active":1}}},"libbeat":{"config":{"module":{"running":0},"reloads":1,"scans":1},"output":{"type":"elasticsearch"},"pipeline":{"clients":1,"events":{"active":2,"published":2,"retry":2,"total":2}}},"system":{"cpu":{"cores":4},"load":{"1":5.29,"15":5.27,"5":5.74,"norm":{"1":1.3225,"15":1.3175,"5":1.435}}}}}}
synthetics       | 2020-11-25T19:30:19.242Z	INFO	[monitoring]	log/log.go:154	Uptime: 8.373217134s
synthetics       | 2020-11-25T19:30:19.243Z	INFO	[monitoring]	log/log.go:131	Stopping metrics logging.
synthetics       | 2020-11-25T19:30:19.244Z	INFO	instance/beat.go:461	heartbeat stopped.
synthetics       | 2020-11-25T19:30:19.245Z	ERROR	instance/beat.go:956	Exiting: exit status 243
synthetics       | Exiting: exit status 243
synthetics exited with code 1
kuisathaverat

comment created time in a day

more