GithubHelp home page GithubHelp logo

badtuxx / giropops-monitoring Goto Github PK

View Code? Open in Web Editor NEW
1.3K 74.0 271.0 129 KB

Full stack tools for monitoring containers and other stuff. ;)

Home Page: https://youtube.com/linuxtips

License: Apache License 2.0

Makefile 2.73% JavaScript 27.88% Dockerfile 69.39%
netdata prometheus alertmanager rocket grafana stack docker-swarm giropops-monitoring docker monitoring-containers

giropops-monitoring's Introduction

Discord

YouTube Channel Subscribers YouTube Channel Views Twitch Status GitHub followers Twitter Follow Twitter Follow

Docker Pulls Docker Pulls Docker Pulls

GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars

giropops-monitoring

Full stack tools for monitoring containers and other stuff. ;)

  • Netdata
  • Prometheus
  • AlertManager
  • Rocket.Chat
  • Docker
  • cAdvisor
  • Grafana
  • Node_Exporter

Install Demonstration

demo

Howto

First of all, clone the giropopos-monitoring repo:

# git clone https://github.com/badtuxx/giropops-monitoring.git

Install Docker and create Swarm cluster

# curl -fsSL https://get.docker.com | sh
# docker swarm init

Install Netdata:

# bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Setting Netdata Exporter configuration in Prometheus:

# vim conf/prometheus/prometheus.yml
...
- job_name: 'netdata'
    metrics_path: '/api/v1/allmetrics'
    params:
      format: [prometheus]
    honor_labels: true
    scrape_interval: 5s
    static_configs:
         - targets: ['YOUR_IP:19999']

Get Rocket.Chat Incoming WebHook

  1. Deploy giropops stack, only to get the WebHook
# docker stack deploy -c docker-compose.yml giropops
  1. Access YOUR_IP:3080 and create your account

  2. Login with your user and go to: Administration => Integrations => New Integration => Incoming WebHook

  3. Set "Enabled" and "Script Enabled" to "True"

  4. Set all channels, icons, etc. as you need

  5. Paste contents of rocketchat/incoming-webhook.js into Script field.

  6. Create Integration. You will see some values appear. Copy WebHook URL and proceed to "Integration between Rocket.Chat and AlertManager" section.

  7. Remove giropops stack

# docker stack rm giropops

Rocket.Chat Docs

Integration between Rocket.Chat and AlertManager

# vim conf/alertmanager/config.yml

route:
    repeat_interval: 30m
    group_interval: 30m
    receiver: 'rocketchat'

receivers:
    - name: 'rocketchat'
      webhook_configs:
          - send_resolved: false
            # copy below the WEBHOOK that you create before
            url: '${WEBHOOK_URL}'

Deploy Stack with Docker Swarm

Execute deploy to create the stack of giropops-monitoring:

# docker stack deploy -c docker-compose.yml giropops

Creating network giropops_backend
Creating network giropops_frontend
Creating network giropops_default
Creating service giropops_prometheus
Creating service giropops_node-exporter
Creating service giropops_alertmanager
Creating service giropops_cadvisor
Creating service giropops_grafana
Creating service giropops_rocketchat
Creating service giropops_mongo
Creating service giropops_mongo-init-replica

Verify if services are ok:

# docker service ls

ID              NAME                          MODE         REPLICAS  IMAGE                                  PORTS
2j5vievon95j    giropops_alertmanager         replicated   1/1       linuxtips/alertmanager_alpine:latest   *:9093->9093/tcp
y1kinszpqzpg    giropops_cadvisor             global       1/1       google/cadvisor:latest                 *:8080->8080/tcp
jol20u8pahlp    giropops_grafana              replicated   1/1       grafana/grafana:latest                 *:3000->3000/tcp
t3635s4xh5cp    giropops_mongo                replicated   1/1       mongo:3.2
t8vnb7xuyfa8    giropops_mongo-init-replica   replicated   0/1       mongo:3.2
usr0jy4jquns    giropops_node-exporter        global       1/1       linuxtips/node-exporter_alpine:latest  *:9100->9100/tcp
zc3qza0bxys7    giropops_prometheus           replicated   1/1       linuxtips/prometheus_alpine:latest     *:9090->9090/tcp
7bgnm0poxbwj    giropops_rocketchat           replicated   1/1       rocketchat/rocket.chat:latest          *:3080->3080/tcp

PS: Don't worry why giropops_mongo-init-replica service is down, it only executes one time to initialize the replica set. It will not stay running.

Access Services in Browser

To access Prometheus interface on browser:

http://YOUR_IP:9090

To access AlertManager interface on browser:

http://YOUR_IP:9093

To access Grafana interface on browser:

http://YOUR_IP:3000
user: admin
passwd: giropops

To add plugs edit file giropops-monitoring/grafana.config
GF_INSTALL_PLUGINS=plug1,plug2
Current plugs grafana-clock-panel,grafana-piechart-panel,camptocamp-prometheus-alertmanager-datasource,vonage-status-panel

Have fun, access the dashboards! ;)

To access Netdata interface on browser:

http://YOUR_IP:19999

To access Prometheus Node_exporter metrics on browser:

http://YOUR_IP:9100/metrics

To access RocketChat interface on browser:

http://YOUR_IP:3080
> First to register becomes admin

Remember that RocketChat endpoints and payloads are identical to Slack's, so if you wanna set Grafana alerts, just select a slack alert and give it a RocketChat incoming webhook URL, with no script needed.

Test if your alerts are ok:

# docker service rm giropops_node-exporter

Wait some seconds and you will see the integration works fine! Prometheus alerting the AlertManager that alert the Slack that shows it to you! It's so easy and that simple! :D

Of course, create new alerts on Prometheus:

# vim conf/prometheus/alert.rules

Ahhhh, Help us to improve it!

Thanks! #VAIIII

giropops-monitoring's People

Contributors

badtuxx avatar barbosacisco avatar danieljones0028 avatar diegodorgam avatar ffknob avatar fschroeder-coda avatar gerardo-junior avatar greenmind-sec avatar perylemke avatar strund3r avatar willianvalerio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

giropops-monitoring's Issues

Grafana not pulling data

I'm not able to make a working query (tested in prometheus) to pull data into Grafana. The option "metrics" seems to be nonexistent in Graphs. Any idea or example on how to create a graph in Grafana?

Erro "Failed to create a Container Manager: mountpoint for cpu not found" no cadvisor

Ao tentar fazer deploy da stack no docker-compose.yml usando o comando docker stack deploy -c docker-compose.yml giropops os containers do cadvisor não estão subindo, e estão logando a seguinte mensagem de erro:

Failed to create a Container Manager: mountpoint for cpu not found

Failed to create a Container Manager: mountpoint for cpu not found

Na página da imagem do cadvisor no Docker Hub há um aviso indicando que a imagem google/cadvisor foi descontinuada.

DEPRECATED

A antiga imagem google/cadvisor deve ser substituída pela nova gcr.io/cadvisor/cadvisor no docker-compose.yml para que seja possível fazer deploy da stack com sucesso, usando o comando docker stack deploy -c docker-compose.yml giropops.

Prometheus Storage Path

No dockerfile do prometheus o storage aponta para: --storage.tsdb.path /var/lib/prometheus/.

Olhando no docker-compose.yml o volume está apontado para /prometheus

prometheus:
    image: linuxtips/prometheus_alpine
    volumes:
      - ./conf/prometheus/:/etc/prometheus/
      - prometheus_data:/prometheus

Com isso sempre que se atualiza o conf/prometheus/prometheus.yml o swarm cria um novo conrtainer e perde os dados.

Acredito que o mais simples é alterar o docker-compose.yml para atualizar o volume.

prometheus:
    image: linuxtips/prometheus_alpine
    volumes:
      - ./conf/prometheus/:/etc/prometheus/
      - prometheus_data:/var/lib/prometheus

Gustavo

Mano meu container do alertmanagger sobe fica 10 segundos no ar e morre...

eu acho que teve algum problema pois subi o swarm com o comando

docker swarm init --advertise-addr 192.168.15.9
pois ele dizia que tinha muita interface definida na minha wlp6s0 ... provavelmente por causa do monte de bridge feita no vagrant.... lll vou tentar reiniciar a interface sem resquícios do vagrant e virtualbox e fazer tudo de novo...

vou tentar de novo aqui ajustar a interface pro docker swarm init tentar subir sem precisar parametros e dou retorno aqui...

aproveito pra dizer que seus vídeos e didática são fodásticos demais tens uns fã aqui... #Vaiiiiiii

fica essas porra sem parar no syslog

Nov 5 02:52:39 daniel-dell kernel: [62035.773260] docker_gwbridge: port 9(vethc06ff52) entered blocking state
Nov 5 02:52:39 daniel-dell kernel: [62035.773271] docker_gwbridge: port 9(vethc06ff52) entered forwarding state
Nov 5 02:52:41 daniel-dell dockerd[28369]: time="2018-11-05T02:52:41-02:00" level=info msg="shim reaped" id=ee980ffb213df16e6c5fac0482d39e543cacd0bd299326084f7ffbd838bf3542
Nov 5 02:52:41 daniel-dell dockerd[28369]: time="2018-11-05T02:52:41.721364798-02:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Nov 5 02:52:43 daniel-dell kernel: [62040.181280] docker_gwbridge: port 9(vethc06ff52) entered disabled state
Nov 5 02:52:43 daniel-dell kernel: [62040.366178] docker_gwbridge: port 9(vethc06ff52) entered disabled state
Nov 5 02:52:43 daniel-dell kernel: [62040.378525] docker_gwbridge: port 9(vethc06ff52) entered disabled state
Nov 5 02:52:43 daniel-dell NetworkManager[909]: [1541393563.7706] device (vethc06ff52): released from master device docker_gwbridge
Nov 5 02:52:46 daniel-dell dockerd[28369]: time="2018-11-05T02:52:46.061814663-02:00" level=info msg="No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4]"
Nov 5 02:52:46 daniel-dell dockerd[28369]: time="2018-11-05T02:52:46.061936619-02:00" level=info msg="IPv6 enabled; Adding default IPv6 external servers: [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844]"
Nov 5 02:52:46 daniel-dell dockerd[28369]: time="2018-11-05T02:52:46.166695506-02:00" level=error msg="fatal task error" error="task: non-zero exit (1)" module=node/agent/taskmanager node.id=xgxtzyhszhdrrwld0o9u6ui64 service.id=27gabhyf7ib95nji6bfb5uxon task.id=eocv1jyhygjk8n7ucvxpptr7e
Nov 5 02:52:46 daniel-dell kernel: [62043.068849] docker_gwbridge: port 5(veth3a1c8a0) entered blocking state
Nov 5 02:52:46 daniel-dell kernel: [62043.068861] docker_gwbridge: port 5(veth3a1c8a0) entered disabled state
Nov 5 02:52:46 daniel-dell kernel: [62043.127848] docker_gwbridge: port 5(veth3a1c8a0) entered blocking state
Nov 5 02:52:46 daniel-dell kernel: [62043.127857] docker_gwbridge: port 5(veth3a1c8a0) entered forwarding state
Nov 5 02:52:47 daniel-dell kernel: [62043.825848] docker_gwbridge: port 5(veth3a1c8a0) entered disabled state
Nov 5 02:52:47 daniel-dell dockerd[28369]: time="2018-11-05T02:52:47-02:00" level=info msg="shim docker-containerd-shim started" address="/containerd-shim/moby/50955bcf4be2c0beccc2fc64f04efcab747b0f2c107c0b1e44ec1b26ba4262c1/shim.sock" debug=false pid=31833
Nov 5 02:52:49 daniel-dell kernel: [62046.443497] docker_gwbridge: port 5(veth3a1c8a0) entered blocking state
Nov 5 02:52:49 daniel-dell kernel: [62046.443528] docker_gwbridge: port 5(veth3a1c8a0) entered forwarding state
Nov 5 02:52:51 daniel-dell dockerd[28369]: time="2018-11-05T02:52:51-02:00" level=info msg="shim reaped" id=50955bcf4be2c0beccc2fc64f04efcab747b0f2c107c0b1e44ec1b26ba4262c1
Nov 5 02:52:51 daniel-dell dockerd[28369]: time="2018-11-05T02:52:51.963512686-02:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Nov 5 02:52:52 daniel-dell dockerd[28369]: time="2018-11-05T02:52:52.307563941-02:00" level=info msg="No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4]"
Nov 5 02:52:52 daniel-dell dockerd[28369]: time="2018-11-05T02:52:52.307679876-02:00" level=info msg="IPv6 enabled; Adding default IPv6 external servers: [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844]"
Nov 5 02:52:52 daniel-dell kernel: [62049.215240] docker_gwbridge: port 5(veth3a1c8a0) entered disabled state
Nov 5 02:52:52 daniel-dell kernel: [62049.270165] docker_gwbridge: port 9(vethe5b0bd1) entered blocking state
Nov 5 02:52:52 daniel-dell kernel: [62049.270177] docker_gwbridge: port 9(vethe5b0bd1) entered disabled state
Nov 5 02:52:52 daniel-dell kernel: [62049.279975] docker_gwbridge: port 9(vethe5b0bd1) entered blocking state
Nov 5 02:52:52 daniel-dell kernel: [62049.279984] docker_gwbridge: port 9(vethe5b0bd1) entered forwarding state
Nov 5 02:52:52 daniel-dell kernel: [62049.348635] docker_gwbridge: port 5(veth3a1c8a0) entered disabled state
Nov 5 02:52:52 daniel-dell kernel: [62049.419633] docker_gwbridge: port 5(veth3a1c8a0) entered disabled state
Nov 5 02:52:53 daniel-dell NetworkManager[909]: [1541393573.0265] device (veth3a1c8a0): released from master device docker_gwbridge
Nov 5 02:52:53 daniel-dell kernel: [62049.990925] docker_gwbridge: port 9(vethe5b0bd1) entered disabled state

Portas não respondem.

Eu to vendo os videos da [ Série Monitoração ], eu percebi que o código teve umas mudanças, no atual código eu não consigo rodar a maioria das portas no browser, já tentei até com uma ec2 da amazon. As únicas portas que funcionam são a do prometheus 9090 e a do Netdata 19999, todo responde fica carregando infinitamente.

Any tip for my node-exporter ?

all graphs of node-exporter in grafana are listed as N / A (in value), but in prometheus / targets all appear as OK, I do not understand until now why does this ... any help?

Como integrar com slack

Pessoal, boa tarde...
Estou a uns dias tentando implementar o projeto... estou querendo usar o slack e não o rocket chat...
nos videos do youtube vocês ensinam como o slack.. mas não consigo .... acho que mudaram algo no alertmanager que o slack n ta consigurando sei la...
o alertmanager não sobe...
sou novo em todo esse lance de docker monitoramento e etc... precisava de um help...
Desde já agradeço... e o projeto ta muito bom.
Valeu...

Grafana não sobe

Todos os outros subiram normal, mas nada do grafana quando pedi os logs vi isso:

Failed to send request: Get https://grafana.com/api/plugins/repo/grafana-clock-panel: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Error: ✗ Failed to send request. error: Get https://grafana.com/api/plugins/repo/grafana-clock-panel: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Testei o endereço com o curl e está acessível do host.

Prometheus not connecting in netdata on host docker

Hi,

I followed the instructions on "How To", but getting an error on Prometheus job 'netdata'
Apparently, it's can't connect to host/node.

prometheus.yml:

  • job_name: 'netdata'
    metrics_path: '/api/v1/allmetrics'
    params:
    format: [prometheus]
    honor_labels: true
    scrape_interval: 15s
    static_configs:
    - targets: ['localhost:19999']

Error:

Get http://localhost:19999/api/v1/allmetrics?format=prometheus: dial tcp 127.0.0.1:19999: connect: connection refused

How configure the prometheus.yml?

Thanks for advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.