Jadual Kandungan
Gunakan Prometheus untuk pemantauan aplikasi
Gunakan ElasticSearch dan Logstash untuk pengurusan log
Rumah Operasi dan penyelenggaraan operasi dan penyelenggaraan linux Cara menggunakan Docker untuk pemantauan aplikasi dan pengurusan log

Cara menggunakan Docker untuk pemantauan aplikasi dan pengurusan log

Nov 07, 2023 pm 04:58 PM
docker pantau Pengurusan log

Cara menggunakan Docker untuk pemantauan aplikasi dan pengurusan log

Docker telah menjadi teknologi penting dalam aplikasi moden, tetapi menggunakan Docker untuk pemantauan aplikasi dan pengurusan log adalah satu cabaran. Dengan peningkatan berterusan fungsi rangkaian Docker, seperti Penemuan Perkhidmatan dan Pengimbangan Beban, kami semakin memerlukan sistem pemantauan aplikasi yang lengkap, stabil dan cekap.

Dalam artikel ini, kami akan memperkenalkan secara ringkas penggunaan Docker untuk pemantauan aplikasi dan pengurusan log serta memberikan contoh kod khusus.

Gunakan Prometheus untuk pemantauan aplikasi

Prometheus ialah sumber terbuka, alat pemantauan perkhidmatan dan amaran berasaskan model Tarik yang dibangunkan oleh SoundCloud. Ia ditulis dalam bahasa Go dan digunakan secara meluas dalam penyelesaian perkhidmatan mikro dan persekitaran awan. Sebagai alat pemantauan, ia boleh memantau CPU, memori, rangkaian dan cakera Docker, dsb., dan juga menyokong penukaran data berbilang dimensi, pertanyaan fleksibel, penggera dan fungsi visualisasi, membolehkan anda bertindak balas dengan cepat dan membuat keputusan dengan cepat.

Satu lagi perkara yang perlu diambil perhatian ialah Prometheus perlu membuat sampel melalui mod Tarik, iaitu, mengakses antara muka /metrics dalam aplikasi yang dipantau untuk mendapatkan data pemantauan. Oleh itu, apabila memulakan imej aplikasi yang dipantau, anda perlu terlebih dahulu mengkonfigurasi IP dan port yang boleh mengakses Prometheus ke dalam antara muka /metrics. Di bawah ialah aplikasi Node.js yang mudah.

const express = require('express')
const app = express()

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.get('/metrics', (req, res) => {
  res.send(`
    # HELP api_calls_total Total API calls
    # TYPE api_calls_total counter
    api_calls_total 100
  `)
})

app.listen(3000, () => {
  console.log('Example app listening on port 3000!')
})
Salin selepas log masuk

Dalam kod ini, kami mengembalikan penunjuk pemantauan api_calls_total melalui antara muka /metrics.

Seterusnya, muat turun imej Docker Prometheus daripada tapak web rasmi dan buat fail docker-compose.yml, dan dalam fail ini, kami memperoleh data aplikasi Node.js.

version: '3'
services:
  node:
    image: node:lts
    command: node index.js
    ports:
      - 3000:3000

  prometheus:
    image: prom/prometheus:v2.25.2
    volumes:
      - ./prometheus:/etc/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention.time=15d'
    ports:
      - 9090:9090
Salin selepas log masuk

Dalam fail docker-compose.yml, kami mentakrifkan dua perkhidmatan, satu ialah perkhidmatan Node yang menjalankan aplikasi Node.js, dan satu lagi ialah perkhidmatan Prometheus untuk pemantauan. Antaranya, port yang diterbitkan oleh perkhidmatan Node ialah port 3000. Melalui pemetaan port, antara muka /metrics aplikasi Node boleh diakses melalui IP dan port 3000 dalam docker-compose.yml. Prometheus boleh mengakses data penunjuk pemantauan yang sepadan melalui port 9090.

Akhir sekali, dalam fail prometheus.yml, kita perlu menentukan sumber data yang hendak diperolehi.

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'node-exporter'
    static_configs:
    - targets: ['node:9100']

  - job_name: 'node-js-app'
    static_configs:
    - targets: ['node:3000']
Salin selepas log masuk

Dalam fail ini, kami mentakrifkan penunjuk semua aplikasi Node.js yang akan dikumpulkan, dengan parameter sasaran ialah alamat IP aplikasi Node.js dan nombor portnya yang sepadan. Di sini, kami menggunakan nod dan port 3000.

Akhir sekali, jalankan arahan docker-compose up untuk memulakan keseluruhan aplikasi dan perkhidmatan pemantauannya, dan lihat metrik ahli dalam Prometheus.

Gunakan ElasticSearch dan Logstash untuk pengurusan log

Dalam Docker, data log aplikasi diedarkan dalam bekas Docker yang berbeza. Jika anda ingin mengurus log ini di tempat terpusat, anda boleh menggunakan ElasticSearch dan Logstash dalam ELK untuk mengurus log secara berpusat, menjadikannya lebih mudah untuk memantau dan menganalisis sumber komputer.

Sebelum anda bermula, anda perlu memuat turun imej Docker Logstash dan ElasticSearch dan mencipta fail docker-compose.yml.

Dalam fail ini, kami mentakrifkan tiga perkhidmatan, antaranya bls ialah perkhidmatan API yang digunakan untuk mensimulasikan log perniagaan Selepas setiap respons, log akan direkodkan ke fail stdout dan log. Perkhidmatan logstash dibina daripada imej Docker yang disediakan secara rasmi oleh Logstash dan digunakan untuk mengumpul, menapis dan menghantar log. Perkhidmatan ElasticSearch digunakan untuk menyimpan dan mendapatkan semula log.

version: '3'
services:
  bls:
    image: nginx:alpine
    volumes:
      - ./log:/var/log/nginx
      - ./public:/usr/share/nginx/html:ro
    ports:
      - "8000:80"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "10"

  logstash:
    image: logstash:7.10.1
    volumes:
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    environment:
      - "ES_HOST=elasticsearch"
    depends_on:
      - elasticsearch

  elasticsearch:
    image: elasticsearch:7.10.1
    environment:
      - "http.host=0.0.0.0"
      - "discovery.type=single-node"
    volumes:
      - ./elasticsearch:/usr/share/elasticsearch/data
Salin selepas log masuk

Dalam fail konfigurasi, kami memetakan laluan dalam bekas ke sistem fail log hos. Pada masa yang sama, melalui pilihan pembalakan, saiz volum dan kuantiti log ditakrifkan untuk mengehadkan storan yang diduduki oleh log.

Dalam fail konfigurasi logstash, kami mentakrifkan saluran paip baharu bernama nginx_pipeline.conf, yang digunakan untuk mengendalikan pengumpulan, penapisan dan penghantaran log nginx. Sama seperti cara ELK berfungsi, logstash akan memproses log yang diterima berdasarkan keadaan berbeza dan menghantarnya ke kelompok Elasticsearch yang telah dibuat. Dalam fail konfigurasi ini, kami mentakrifkan logik pemprosesan berikut: nginx_pipeline.conf,该文件用于处理nginx日志的收集、过滤和传输。与ELK的工作原理相同,logstash将根据不同的条件,对接收到的日志进行处理,并将其发送到已经创建的 Elasticsearch 集群中。在该配置文件中,我们定义了如下处理逻辑:

input {
  file {
    path => "/var/log/nginx/access.log"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

output {
  elasticsearch {
    hosts => [ "${ES_HOST}:9200" ]
    index => "nginx_log_index"
  }
}
Salin selepas log masuk

在该配置文件中,我们定义了一个name为file的输入,表示要从本地Log文件中读取数据。接着,我们引入了使用grok库来解析符合特定模板的日志的filter。最后,我们定义了输出,其将数据传输到 Elasticsearch 集群的地址,同时将检索和报告通过环境变量ES_HOSTrrreee

Dalam fail konfigurasi ini, kami mentakrifkan input bernama fail, yang bermaksud bahawa kami ingin membaca data daripada fail Log tempatan. Seterusnya, kami memperkenalkan penapis yang menggunakan perpustakaan grok untuk menghuraikan log yang sepadan dengan templat tertentu. Akhir sekali, kami mentakrifkan output, yang memindahkan data ke alamat gugusan Elasticsearch, sambil menghantar pengambilan dan pelaporan ke dalam bekas melalui pembolehubah persekitaran ES_HOST.

Akhirnya, selepas melengkapkan keseluruhan konfigurasi ELK seperti di atas, kami akan mendapat sistem pengurusan log yang cekap Setiap log akan dihantar ke tempat berpusat dan disepadukan, membolehkan operasi carian, penapisan dan visualisasi mudah. 🎜

Atas ialah kandungan terperinci Cara menggunakan Docker untuk pemantauan aplikasi dan pengurusan log. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pembangunan tangkas dan pengendalian kontena perkhidmatan mikro PHP Pembangunan tangkas dan pengendalian kontena perkhidmatan mikro PHP May 08, 2024 pm 02:21 PM

Jawapan: Perkhidmatan mikro PHP digunakan dengan HelmCharts untuk pembangunan tangkas dan kontena dengan DockerContainer untuk pengasingan dan kebolehskalaan. Penerangan terperinci: Gunakan HelmCharts untuk menggunakan perkhidmatan mikro PHP secara automatik untuk mencapai pembangunan tangkas. Imej Docker membenarkan lelaran pantas dan kawalan versi perkhidmatan mikro. Piawaian DockerContainer mengasingkan perkhidmatan mikro dan Kubernetes mengurus ketersediaan dan kebolehskalaan bekas. Gunakan Prometheus dan Grafana untuk memantau prestasi dan kesihatan perkhidmatan mikro, serta mencipta penggera dan mekanisme pembaikan automatik.

PI Node Teaching: Apakah nod pi? Bagaimana cara memasang dan menyediakan nod pi? PI Node Teaching: Apakah nod pi? Bagaimana cara memasang dan menyediakan nod pi? Mar 05, 2025 pm 05:57 PM

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Cara Memasang DeepSeek Cara Memasang DeepSeek Feb 19, 2025 pm 05:48 PM

Terdapat banyak cara untuk memasang DeepSeek, termasuk: Menyusun dari Sumber (untuk pemaju berpengalaman) menggunakan pakej yang dikompilasi (untuk pengguna Windows) menggunakan bekas docker (untuk yang paling mudah, tidak perlu bimbang tentang keserasian) Dokumen rasmi dengan berhati -hati dan menyediakannya sepenuhnya untuk mengelakkan masalah yang tidak perlu.

Bagaimana untuk menggunakan PHP CI/CD untuk lelaran dengan cepat? Bagaimana untuk menggunakan PHP CI/CD untuk lelaran dengan cepat? May 08, 2024 pm 10:15 PM

Jawapan: Gunakan PHPCI/CD untuk mencapai lelaran pantas, termasuk menyediakan saluran paip CI/CD, ujian automatik dan proses penggunaan. Sediakan saluran paip CI/CD: Pilih alat CI/CD, konfigurasikan repositori kod dan tentukan saluran paip binaan. Ujian automatik: Tulis ujian unit dan penyepaduan dan gunakan rangka kerja ujian untuk memudahkan ujian. Kes praktikal: Menggunakan TravisCI: Pasang TravisCI, tentukan saluran paip, dayakan saluran paip dan lihat hasilnya. Laksanakan penyampaian berterusan: pilih alatan pengerahan, tentukan saluran paip pengerahan dan automatik penggunaan. Faedah: Meningkatkan kecekapan pembangunan, mengurangkan ralat dan memendekkan masa penghantaran.

Sebarkan aplikasi JavaEE menggunakan Docker Containers Sebarkan aplikasi JavaEE menggunakan Docker Containers Jun 05, 2024 pm 08:29 PM

Gunakan aplikasi Java EE menggunakan bekas Docker: Cipta Fail Docker untuk mentakrifkan imej, bina imej, jalankan bekas dan petakan port, dan kemudian akses aplikasi dalam penyemak imbas. Contoh aplikasi JavaEE: REST API berinteraksi dengan pangkalan data, boleh diakses pada localhost selepas penggunaan melalui Docker.

Cara memasang sambungan Docker dalam vscode Langkah-langkah untuk memasang sambungan Docker dalam vscode Cara memasang sambungan Docker dalam vscode Langkah-langkah untuk memasang sambungan Docker dalam vscode May 09, 2024 pm 03:25 PM

1. Mula-mula, selepas membuka antara muka, klik butang ikon sambungan di sebelah kiri 2. Kemudian, cari lokasi bar carian di halaman sambungan yang dibuka 3. Kemudian, masukkan perkataan Docker dengan tetikus untuk mencari pemalam sambungan 4 . Akhir sekali, pilih pemalam sasaran dan klik kanan Hanya klik butang pasang di sudut bawah

Pemantauan kontena perkhidmatan mikro PHP dan amalan pengurusan log Pemantauan kontena perkhidmatan mikro PHP dan amalan pengurusan log May 08, 2024 pm 12:06 PM

Pemantauan kontena perkhidmatan mikro PHP dan pemantauan pengurusan log: Gunakan Prometheus dan Grafana untuk memantau penggunaan sumber, bilangan permintaan dan kependaman. Pengurusan log: Gunakan ELKStack (ElasticSearch, Logstash, Kibana) untuk mengumpul, menghuraikan dan memvisualisasikan log. Gunakan ejen Filebeat untuk menghantar log ke ElasticSearch.

Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Apr 01, 2025 pm 03:06 PM

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...

See all articles