{"id":19614736,"url":"https://github.com/javthon/jinspector","last_synced_at":"2026-07-14T09:32:03.091Z","repository":{"id":37160727,"uuid":"198840967","full_name":"javthon/Jinspector","owner":"javthon","description":"An easy-to-use monitoring tool for Linux and Windows operating systems","archived":false,"fork":false,"pushed_at":"2022-12-14T20:39:33.000Z","size":18639,"stargazers_count":1,"open_issues_count":5,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-27T08:36:45.514Z","etag":null,"topics":["easy-to-use","inspect","java-8","light-monitoring","monitoring","reporting-tool"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/javthon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-25T13:53:09.000Z","updated_at":"2022-10-11T19:33:16.000Z","dependencies_parsed_at":"2023-01-29T01:00:36.971Z","dependency_job_id":null,"html_url":"https://github.com/javthon/Jinspector","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/javthon/Jinspector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javthon%2FJinspector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javthon%2FJinspector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javthon%2FJinspector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javthon%2FJinspector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javthon","download_url":"https://codeload.github.com/javthon/Jinspector/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javthon%2FJinspector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35455901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-14T02:00:06.603Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["easy-to-use","inspect","java-8","light-monitoring","monitoring","reporting-tool"],"created_at":"2024-11-11T10:53:31.720Z","updated_at":"2026-07-14T09:32:03.066Z","avatar_url":"https://github.com/javthon.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n![build](https://img.shields.io/badge/build-passing-brightgreen.svg)\n![license](https://img.shields.io/badge/license-MIT-blue.svg)\n![codecov](https://img.shields.io/badge/codecov-73%25-orange.svg)\n![jdk](https://img.shields.io/badge/jdk-1.8%2B-blue.svg)\n![platform](https://img.shields.io/badge/platform-windows%7Clinux-lightgrey.svg)\n![language](https://img.shields.io/badge/language-java-yellow.svg)\n\n\n## What is it?\nJinspector is an easy-to-use monitoring tool for Linux and Windows operating systems. Jinspector is based on SpringBoot, its main function is to offer an easy flexible way to monitor your services status on distributed systems. Jinspector does not provide monitoring metrics like network utilization, CPU load or disk space consumption. It just monitor whether your services are working or not and send an email report. \n\n## Key features\n- Easy to install\n- Simple configuration\n- Cross platform\n- Report friendly\n- Flexible inspection\n- No need to restart after modifying configuration\n\n## Who is suitable to use it\n- Do issue inspections only\n- The number of hosts is small\n- Want to install and configure in an easy way\n\n\n## Contents\n- [Requirements](#requirements)\n- [Get started](#get-started)\n- [Get started with docker](#get-started-with-docker)\n- [Configuration](#configuration)\n- [Tips](#tips)\n- [TODO](#todo)\n- [Contributing](#contributing)\n\n\n## Requirements\n- Jinspector requires JDK1.8+ installed  \n- You need to know about yaml language, if you don't know this language, it doesn't matter, cause it's quite simple. You don't need to know all about this language, just follow the configuration sample and you will know how to configure it easily   \n\n\n## Get Started\nStep 1: download the latest release  \nStep 2: unzip the release file  \nStep 3: find the `config` folder, configure the files inside according to the [configuration](#configuration) rules below  \nStep 4: go to the jinspector folder and run the monitoring progarm, for Linux use `nohup java -jar jinspector.jar \u0026`, for windows use `java -jar jinspector.jar`  \n\n\n## Get started with docker\nThis part needs to be accomplished\n\n\n## Configuration\n\nconfiguration files:\n- [id.yml](#idyml)\n- [server.yml](#serveryml)\n- [expose.yml](#exposeyml)\n- [local.yml](#localyml)\n- [schdule.yml](#schduleyml)\n\nThese files can be found in the latest release\n\n##### id.yml\nThis file is simple, it just used to identify your host, here is the example file:\n```\nid: anyid\n```\n\n##### server.yml\nThis file describes which host will be chosen as a server and which port will the server use. In some cases a client can't send out inspection results because it has shut down due to unexpected reasons, so a list of required host ids are necessary, they can help you know whether the hosts' clients are working\n```\nserver:\n  #server id\n  id: anyid\n  #server ip\n  ip: 108.61.174.70\n  #Jinspector server will use this port\n  port: 2333\n  #unique string that identify your clients\n  token: zxjawdjawdjgawgnnxuw\n\nrequiredHostIds:\n  #sometimes a client can't send out inspection results because it has shut down due to\n  #unexpected reasons, so a list of required host ids are necessary, they can help you know\n  #whether the hosts' clients are working\n  #Here are the list of host ids below, host id is configured at id.yml\n  - anyid\n  - clientid1\n  - clientid2\n\n\n```\n\n##### expose.yml\nWe can judge whether a service is running on a remote host mostly by its port, if the port is listening that will prove the service is running, for web aplications an accessible url tells the service works fine, all configurations in expose.yml can be access from outsite, sample configuration is as below:\n```\n# all name and description attributes are not required\nconnections:\n  web:\n    # full attributes edition\n    - connection:\n        name: ASF homepage\n        #(required) the url you want to check if it is accessible\n        url: http://www.apache.org/\n        description: The Apache Software Foundation website\n    # simplest attributes edition\n    - connection:\n        url: https://mvnrepository.com/\n    - connection:\n        name: unreachable site\n        url: https://www.unreachable.com\n\n  ports:\n    # full attributes edition\n    - connection:\n        name: mysql\n        #(required)\n        host: nanmatou.club\n        #(required)\n        port: 3306\n        description: mysql port\n    # simplest attributes edition\n    - connection:\n        host: nanmatou.club\n        port: 3319\n```\n##### local.yml\nSome services can't access from outside, the hosts have only private network environment, or like a timed task, it doesn't need to use a port, in this circumstance expose.yml won't work, so we need to configure local inspection, the configuration sample file is shown as below:\n```\n# all name and description attributes are not required\nservers:\n  - server:\n      # the id is related to the id in id.yml\n      id: serverhostid\n      name: master\n      services:\n        # full attributes edition\n        - service:\n            name: Tomcat\n            inspectCommand: jps\n            expectedResult: Bootstrap\n            description: Is tomcat running?\n        # simplest attributes edition\n        - service:\n            inspectCommand: sudo docker ps\n            expectedResult: mysql\n        - service:\n            inspectCommand: ps -e\n            expectedResult: unknow process\n  - server:\n      id: clienthostid\n      name: client1\n      services:\n        - service:\n            inspectCommand: tasklist\n            expectedResult: chrome\n        - service:\n            inspectCommand: netstat -ano\n            expectedResult: 49664\n```\nThe local inspections are made up of a group of severs, each server has an `id`, which is configured at `id.yml`, and `name` is used to let you know which host it is, it will be displayed in an email report. Each server has several `services`, each `service` defines how you inpect the service and whether the service is running.For example, I want to know whether my docker mysql container is running on linux, so I logined to my linux server and typed the command \"docker ps\" and I saw this:\n```\nCONTAINER ID     IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES\nb7dea5675023 mysql:5.7 \"docker-entrypoint.s…\" 5 weeks ago Up 5 weeks 33060/tcp, 0.0.0.0:3318-\u003e3306/tcp mysql-service\n```\nSo if I see `mysql-service`, the docker mysql container is running, the configuration block is like below:\n```\n- service:\n    name: docker mysql\n    inspectCommand: docker ps\n    expectedResult: mysql-service\n    description: Whether the docker mysql container running\n```\n\n##### shedule.yml\nThis file defines the email `sender` and inspection `shedule`, Jinspector has a built-in email sender, if you want to set up your own email config, please visit your mail service provider website for help, for gmail, check [sending email via gmail](https://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/)\n`receivers` defines a list of email address you want to send to\nin `schedule` node, `report` will send mail with all inspection results while `inspect` only send results with issues\n```\nmail:\n  sender:\n    host: smtp.qq.com\n    port: 465\n    address: jinspector@foxmail.com\n    password: yjrvxfydupwkdfch\n    nickname: Jinspector\n  receivers:\n    - jinspector@foxmail.com\n  title: Jinspector\n\n\nschedule:\n  report:\n    # 24-hour time display\n    initialTime: \"16:57\"\n    # in seconds\n    interval: 1*60*3\n  inspect:\n    initialTime: \"10:18\"\n    interval: 120\n```\n\nAn email report will be like this:\n![Image text](https://github.com/javthon/Jinspector/blob/master/sample/result/report_desktop.png)\n\n\n\n## Tips\nHere are some inspectCommand tips:\n```\nnetstat -ano        # look for ports\ntasklist         # look processes on windows\nps aux | grep xxx.jar         # find process on linux\n......\nWaiting for contibuters' advice\n```\n\n## TODO\n- web interface\n- auto recover function\n- use netty instead of tomcat for better performance\n- complete the code comments and documents\n- built-in inspect commands and auto find services\n- set up docker version\n\n\n## Contributing\nYour contributions are always welcome!\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavthon%2Fjinspector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavthon%2Fjinspector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavthon%2Fjinspector/lists"}