I have setup a test perfino server attached the agent to a jvm.
I can see it register and but the mbean browser shows nothing ! is there something I am missing
Related
is there anyway to trace the messaging flow in edgeHub?
i have two modules that connect sensors (the opc-ua publisher) and a coap proxy and i am routing them to the cloud with
"all2hub": "FROM /messages/* INTO $upstream"
That works fine and I can see the telemetry from both devices
If i add another module that does nothing but writes to the console every message it receives with
"all2test": "FROM /messages/* INTO BrokeredEndpoint(\"/modules/tester/inputs/test\")"
I don't get a single message coming to the test module...I wonder if I could trace and see what is happening....
You can enable debug logs for edgeHub by adding RuntimeLogLevel environment variable with value debug to the deployment (from the portal go to Set modules -> Configured advanced Edge runtime settings)
Another way to enable debug logs is by updating the IoT Edge security manager config file
Replace env: {} with
env:
RuntimeLogLevel: debug
Save the file and restart the IoT Edge security manager.
With debug logs enavled you should check edgeHub logs if messages are received and sent.
I have exposed an MBean NotifyFailedTriggers that exposes an Integer value. I have configured the poller, collectd and jmx-datacollection config files correctly. However, the collectd daemon seems to be skipping the mbean saying it is not registered. See the attached log.
2018-06-12 13:08:41,204 DEBUG [pool-10-thread-8] o.o.n.j.i.DefaultJmxCollector: Collecting MBean (objectname=com.example:name=notifyFailedTriggers, wildcard=false)
2018-06-12 13:08:41,205 DEBUG [pool-10-thread-8]
o.o.n.j.i.DefaultJmxCollector: Collecting ObjectName
com.example:name=notifyFailedTriggers
2018-06-12 13:08:41,328 DEBUG [pool-10-thread-8]
o.o.n.j.i.DefaultJmxCollector: ObjectName
com.example:name=notifyFailedTriggers is not registered.
2018-06-12 13:08:41,329 DEBUG [pool-10-thread-8]
o.o.n.j.i.DefaultJmxCollector: Skip ObjectName
com.example:name=notifyFailedTriggers
2018-06-12 13:08:41,510 INFO [Collectd-Thread-15-of-50]
o.o.n.c.CollectableService: run: finished collection for
3/xx.xx.84.122/onms-poc/example1
2018-06-12 13:08:41,510 DEBUG [Collectd-Thread-15-of-50]
o.o.n.s.LegacyScheduler: schedule: Adding ready runnable
CollectableService for service 3:/xx.xx.84.122:onms-poc (ready in
300000ms) at interval 300000
This is a standalone java application that is exposing the MXBeans.
Is there a specific reason why it considers this MXBean to be unregistered and hence skipping it?
In a nutshell, it considers the MXBean to be unregistered if the MBean server says that it is. You may need to configure the application to enable certain beans, or perhaps the version of the application that you're using does not support the particular bean in question.
Behind the curtain, the JMX collector asks the MBean server whether the object is registered. If the MBean server responds that it is not, the JMX collector logs the message you pasted. Here's the JMX collector code where that happens, and here's the documentation of the "isRegistered" method that it's calling to make that determination.
I am trying to setup a Jenkins server using one of the Chef cookbooks from the supermarket. Unfortunately it is failing with the below error. The plugin recipe requires for the Global security configuration - "Enable CLI with remoting" to be enabled. Can anybody help me to enable it from a Chef recipe so that
java -jar jenkins-cli.jar -s http://localhost:8080 -remoting
installs the plugin.
Thanks
Here is the error log
java.io.IOException: No X-Jenkins-CLI2-Port among [X-Jenkins, null, Server, X-Content-Type-Options, X-You-Are-In-Group-Disabled, X-Hudson, X-Permission-Implied-By, Date, X-Jenkins-Session, X-You-Are-Authenticated-As, X-Required-Permission, Set-Cookie, Expires, Content-Length, Content-Type]
at hudson.cli.CLI.getCliTcpPort(CLI.java:311)
at hudson.cli.CLI.<init>(CLI.java:137)
at hudson.cli.CLIConnectionFactory.connect(CLIConnectionFactory.java:82)
at hudson.cli.CLI._main(CLI.java:615)
at hudson.cli.CLI.main(CLI.java:426)
Suppressed: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/cli?remoting=true
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
at hudson.cli.FullDuplexHttpStream.<init>(FullDuplexHttpStream.java:101)
at hudson.cli.CLI.connectViaHttp(CLI.java:163)
at hudson.cli.CLI.<init>(CLI.java:141)
As per the official documentation, remoting option is disabled by default. you can enable it by going to Configure Global Security. I don't think by programatically we can't enable it. For more details use this official link. Remoting Connection Mode | official Jenkins
This is the solution they are providing for your problem. Hope this helps.
Go to Manage Jenkins > Configure Global Security and choose "Fixed" or "Random" under TCP port for JNLP agents.
You can enable the remoting option by writing a bit of Groovy that gets run when Jenkins starts, but a better option is to configure the proper authentication and use the ssh or http methods.
https://github.com/chef-cookbooks/jenkins#authentication
See also: https://stackoverflow.com/a/51106793/3794873
I have already configured the java enviroment and installtion
path
This is a duplicate question from Server Fault: Answer Here
Java Web Start utilizes TCP so it has to be enabled and configured in Jenkins...
Login to Jenkins as admin
Manage Jenkins > Configure Global Security > TCP port for JNLP agents
Do yourself a favor and pick a static port assignment...
As of Jenkins version 2.176.3, there is option enabled when "Launch agent by connecting it to the master" which is same as "launch agent via java web start" once you enable the "Manage Jenkins => Configure Global Security => Agents => TCP port for inbound agents" as mentioned above.
e.g. Fixed: 50000
Make sure that you've enabled a JNLP port in Manager Jenkins -> Configure Global Security. If no JNLP port is specified, then the JNLP slave option will not appear.
I had similar issue after updating my Jenkins, I then used "Launch agent by connecting it to the master" method to launch and my port "TCP port for inbound agents" under
- Manage Jenkins => Configure Global Security => Agents => TCP port for inbound agents got changed to 8888. I have updated it back to 50000 and that resolved the issue. Hope it helps.
On some systems I used to get a button to download the agent's JNLP. On my new linux mint system, I instead get the "JNLP not available" message. So was lost as to where to get the JNLP file. However, looking in the command below I saw the URL for downloading it, eg:
http://127.0.0.1:8080/computer/build_slave/jenkins-agent.jnlp
Go to the slave machine, paste the URL in the browser to download it!
This might also be due to missing permissions for the user trying to setup the agent via java web start, at least that was the case in my scenario;
To verify this, try to download the jnlp directly; URL would be of the form [jenkins url]/computer/[agent name]/slave-agent.jnlp, if there is a permissions issue you will get something along the lines of:
Access Denied
xxxx is missing the Agent/Connect permission
I have a build/test server which is currently running Jenkins for my continuous integration and it also is acting as my test server where code will be deployed to once built (i hope to rectify this and seperate these at a later date when budget allows)
I have a .NET web solution (nothing complex just Umbraco essentially) that i have in SVN and Jenkins is now building correctly. I now want to deploy it onto the same server using MSDeploy. After the build completes the package is generated but the deploy fails with the error
ERROR_DESTINATION_NOT_REACHABLE: Web deployment task failed. (Could not connect to the remote computer ("xxxxx.xxxxxxx.xxx.xxxx"). On the remote computer, make sure that Web Deploy is installed and that the required process ("Web Management Service") is started
Here is my msbuild parameters that Jenkins uses
/P:Configuration=Release
/P:DeployOnBuild=True
/P:MSDeployPublishMethod=WMSVC
/P:DeployTarget=MSDeployPublish
/P:PublishProfile=GetSomePixels
/P:MsDeployServiceUrl=https://build.########
/P:AllowUntrustedCertificate=True
/P:CreatePackageOnPublish=True
/P:UserName=#######
/P:Password=########
I've checked the server and the Web Management Service is running and is starting up manually
I've also gone into IIS 8 manager (server 2012) and checked the "Allow Remote Connections" box under "Management Service". Restarted IIS and the WMSVC and still not working.
If i go to https://myserver.co.uk:8172/MsDeploy.axd in a browser it resolves (gives you the warning about an untrusted cert) and then displays a blank page.
Anyone got any ideas as to what i can do? I thought that it may be firewall related and even though it had added an exception to windows firewall for 8172 i have turned the entire firewall off to completely rulle that out and still no luck.
Have run this on the server to check its listening on the correct port
C:\Users\Administrator>netstat -a | findstr 8172
TCP 0.0.0.0:8172 GSP-BUILD:0 LISTENING
TCP [::]:8172 GSP-BUILD:0 LISTENING
Ok i've resolved this. It appears you have to activate the web management service first and then install web deploy and i'd done it the other way round. I uninstalled WebDeploy and re-installed it, restarted the server and its working
Agree with comment.
We had a similar issue. Initial installation even post Web Management Service activation appeared to be incomplete. In our case, even though the service said it was started we couldn't achieve the "green tick" when testing the connection from the Publish dialog when defining a profile.
Reinstalling WebDeploy 3.6 made it function properly.