Skip to content

Commit

Permalink
[FIX] bugs fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
ismoilovdevml committed Feb 8, 2024
1 parent f97e1cf commit eaa524e
Show file tree
Hide file tree
Showing 4 changed files with 121 additions and 46 deletions.
76 changes: 48 additions & 28 deletions pages/guides/database/postgres-monitoring.en-UZ.mdx
Original file line number Diff line number Diff line change
@@ -1,56 +1,55 @@
import { Callout } from "nextra-theme-docs";

![wordpress](/images/tutorials/database/image.png)
![wordpress](/images/tutorials/database/2.png)
## PostgreSQL Monitoring

# PostgreSQLni Prometheus/Grafana va postgres_exporter orqali monitoring qilish
![postgresql-ornatish](/images/tutorials/database/postgresql-monitoring.png)

## Kirish

Bugungi raqamli asrda ma'lumotlar bazalari son-sanoqsiz ilovalarning asosi bo'lib, korxonalar, hukumatlar va jismoniy shaxslar uchun muhim servicelarni taqdim etadi. Elektron tijorat platformalaridan sog'liqni saqlash tizimlariga qadar ma'lumotlar bazalari zamonaviy dunyomizni quvvatlaydigan katta hajmdagi ma'lumotlarni saqlaydi. Shunday qilib, ushbu ma'lumotlar bazalarining sog'lig'i, ishlashi va mavjudligini ta'minlash muhim ahamiyatga ega.

#### Prometheus, Grafana va postgres_exporter haqida qisqacha ma'lumot
## Prometheus, Grafana va postgres_exporter haqida qisqacha ma'lumot

**Prometheus:** HTTP endpointlarini o'lchash orqali nazorat qilinadigan maqsadlardan metikalarni to'playdigan open-source monitoring yechimi.
Prometheus haqida malumot va o'rnatish uchun quyidagi qo'llanmani o'qib chiqing. [To'liq qo'llanma](https://devops-journey.uz/tutorials/article/gnp-monitoring). [Prometheus nima?](https://devops-journey.uz/tutorials/article/gnp-monitoring#prometheus-nima), [Prometheus o'ratish va sozlash](https://devops-journey.uz/tutorials/article/gnp-monitoring#prometheus-oratish-va-sozlash), [Prometheusni service sifatida sozlash](https://devops-journey.uz/tutorials/article/gnp-monitoring#prometheusni-service-sifatida-sozlash)
**Prometheus->** HTTP endpointlarini o'lchash orqali nazorat qilinadigan targetlardan metrikalarni to'playdigan open-source monitoring tooli.
Prometheus haqida malumot va o'rnatish uchun quyidagi qo'llanmani ko'rib chiqishingiz mumkin. [To'liq qo'llanma](https://devops-journey.uz/tutorials/article/gnp-monitoring). [Prometheus nima?](https://devops-journey.uz/tutorials/article/gnp-monitoring#prometheus-nima), [Prometheus o'ratish va sozlash](https://devops-journey.uz/tutorials/article/gnp-monitoring#prometheus-oratish-va-sozlash), [Prometheusni service sifatida sozlash](https://devops-journey.uz/tutorials/article/gnp-monitoring#prometheusni-service-sifatida-sozlash)

**Grafana:** Monitoring va vizualizatsiya uchun mashhur open-source platformasi. Grafana bir nechta manbalardan, jumladan Prometheusdan olingan boy vizualizatsiyani (grafiklar, jadvallar va heatmaplar kabi) taqdim etadi. Uning moslashtirilgan dashboardi barcha muhim ko'rsatkichlarning(metrics) jamlangan ko'rinishini taqdim etadi.
Prometheus haqida malumot va o'rnatish uchun quyidagi qo'llanmani o'qib chiqing. [Grafana nima?](https://devops-journey.uz/tutorials/article/gnp-monitoring#grafana-nima), [Grafana serverini qanday o'rnatish va sozlash](Grafana serverini qanday o'rnatish va sozlash), [Grafana va Prometheusni integratsiya qilish](https://devops-journey.uz/tutorials/article/gnp-monitoring#grafana-va-prometheusni-integratsiya-qilish), [Grafana Dashboardni import qilish](https://devops-journey.uz/tutorials/article/gnp-monitoring#grafana-dashboardni-import-qilish)
**Grafana->** Monitoring va vizualizatsiya uchun mashhur open-source platformasi. Grafana bir nechta manbalardan, jumladan Prometheusdan olingan boy vizualizatsiyani (grafiklar, jadvallar va heatmaplar kabi) taqdim etadi. Uning moslashtirilgan dashboardi barcha muhim ko'rsatkichlarning(metrics) jamlangan ko'rinishini taqdim etadi.
Prometheus haqida malumot va o'rnatish uchun quyidagi qo'llanmani o'qib chiqing. [Grafana nima?](https://devops-journey.uz/tutorials/article/gnp-monitoring#grafana-nima), [Grafana serverini qanday o'rnatish va sozlash](https://devops-journey.uz/tutorials/article/gnp-monitoring#grafana-serverini-qanday-ornatish-va-sozlash), [Grafana va Prometheusni integratsiya qilish](https://devops-journey.uz/tutorials/article/gnp-monitoring#grafana-va-prometheusni-integratsiya-qilish), [Grafana Dashboardni import qilish](https://devops-journey.uz/tutorials/article/gnp-monitoring#grafana-dashboardni-import-qilish)

**postgres_exporter:** PostgreSQL ko'rsatkichlari(metrics) uchun Prometheus exporteri. U PostgreSQL misoli bilan birga ishlaydi, ma'lumotlar bazasi bilan bog'liq ko'rsatkichlarni Prometheus qabul qilishi mumkin bo'lgan formatda oladi va ochib beradi. postgres_exporter yordamida connection statsdan tortib so'rovlar unumdorligigacha(query performance) bo'lgan PostgreSQL ning turli jihatlarini kuzatish mumkin.
**postgres_exporter->** PostgreSQL ko'rsatkichlari(metrics) uchun Prometheus exporteri. U PostgreSQL bilan birga ishlaydi, ma'lumotlar bazasi bilan bog'liq ko'metrikalarni Prometheus qabul qilishi mumkin bo'lgan formatda oladi va ochib beradi. postgres_exporter yordamida connection statsdan tortib so'rovlar unumdorligigacha(query performance) bo'lgan PostgreSQL ning turli jihatlarini kuzatish mumkin.

## postgres_exporterni o'rnatish va sozlash


`postgres_exporter` - bu PostgreSQL va Prometheus o'rtasidagi ko'prik vazifasini o'taydigan monitoring stackidagi asosiy komponent. PostgreSQL-ning ichki ko'rsatkichlarini(internal metrics) Prometheus tushunadigan formatga tarjima qilish orqali bu bizga ma'lumotlar bazasining sog'lig'i va ishlashini diqqat bilan kuzatib borish imkonini beradi.
[postgres_exporter](https://github.com/prometheus-community/postgres_exporter) - bu PostgreSQL va Prometheus o'rtasidagi ko'prik vazifasini o'taydigan monitoring stackidagi asosiy komponent. PostgreSQL-ning ichki ko'rsatkichlarini(internal metrics) Prometheus tushunadigan formatga tarjima qilish orqali bu bizga ma'lumotlar bazasining sog'lig'i va ishlashini diqqat bilan kuzatib borish imkonini beradi.

1. Oxirgi versiyani yuklab oling. postgres_exporter rasmiy [GitHub repositoriyasiga](https://github.com/prometheus-community/postgres_exporter/releases) tashrif buyuring va oxirgi versiyani yuklab oling.
**1->** Oxirgi versiyani yuklab oling. postgres_exporter rasmiy [GitHub repositoriyasiga](https://github.com/prometheus-community/postgres_exporter/releases) tashrif buyuring va oxirgi versiyani yuklab oling.

```bash
mkdir /opt/postgres_exporter
cd /opt/postgres_exporter
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.14.0/postgres_exporter-0.14.0.linux-arm64.tar.gz
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.15.0/postgres_exporter-0.15.0.linux-arm64.tar.gz
```
2. Arxivdan chiqarib oling. Bu arxiv bilan bir xil nomdagi jildnini yaratadi. Ushbu jildniga o'ting:
**2->** Arxivdan chiqarib oling. Bu arxiv bilan bir xil nomdagi papkani yaratadi. Ushbu papkaga o'ting:

```bash
tar -xvf postgres_exporter_*.tar.gz
cd postgres_exporter-0.14.0.linux-arm64
cd postgres_exporter-0.15.0.linux-arm64
```
3. Binary faylni mos joyga ko'chiring.
**3->** Binary faylni mos joyga ko'chiring.

Binary faylni `/usr/local/bin` ga o'tkazamiz, shuning uchun uni istalgan joydan osongina execute qilish mumkin:

```bash
sudo cp postgres_exporter /usr/local/bin
```

4. Execution permission berish. postgres_exporter binary fayli execute qilish mumkinligiga ishonch hosil qiling:
**4->** Execution permission berish. postgres_exporter binary fayli execute qilish mumkinligiga ishonch hosil qiling:
```bash
sudo chmod +x /usr/local/bin/postgres_exporter
```
5. Konfiguratsiya. PostgreSQL ulanish qatorini sozlang. postgres_exporter PostgreSQL misoliga ulanish uchun ulanish qatorini talab qiladi.
Buni environment variable yordamida o'rnating. Bu yerda biz `DATA_SOURCE_NAME` deb nomlanuvchi o'zgaruvchini o'rnatamiz . `DATA_SOURCE_NAME` ichidagi barcha belgilangan maʼlumotlar bazalaridan koʻrsatkichlar yigʻiladi.
**5->** Konfiguratsiya. PostgreSQL ulanish qatorini sozlang. postgres_exporter PostgreSQLga ulanish uchun connection stringni talab qiladi.
Buni environment variable yordamida o'rnating. Bu yerda biz `DATA_SOURCE_NAME` deb nomlanuvchi o'zgaruvchini o'rnatamiz . `DATA_SOURCE_NAME` ichidagi barcha belgilangan ma'lumotlar bazalaridan metrikalar yig'iladi.

```bash
cd /opt/postgres_exporter
Expand All @@ -63,12 +62,12 @@ DATA_SOURCE_NAME="postgresql://username:password@localhost:5432/database-name?ss
# yoki barcha databaselarni monitoring qilmoqchi bo'lsangi quyidagi configratsiyani o'zingizga moslab oling
DATA_SOURCE_NAME="postgresql://postgres:postgres@localhost:5432/?sslmode=disable"
```
6. Postgres foydalanuvchisini yaratish.
Birinchi buyruq eksportchi serviceni ishga tushiradigan postgres nomli tizim foydalanuvchisini yaratadi. Bu service cheklangan imtiyozlar bilan ishlashini ta'minlaydi va xavfsizlikni oshiradi.
**6->** Postgres foydalanuvchisini yaratish.
Birinchi buyruq exportchi serviceni ishga tushiradigan postgres nomli tizim foydalanuvchisini yaratadi. Bu service cheklangan imtiyozlar bilan ishlashini ta'minlaydi va xavfsizlikni oshiradi.
```bash
sudo useradd -rs /bin/false postgres
```
7. Systemd uchun service faylini yaratish orqali siz tizimga postgres_exporter jarayonini qanday boshqarish va ishga tushirish haqida ko'rsatma berasiz.
**7->** Systemd uchun service faylini yaratish orqali siz tizimga postgres_exporter jarayonini qanday boshqarish va ishga tushirish haqida ko'rsatma berasiz.

```bash
sudo nano /etc/systemd/system/postgres_exporter.service
Expand All @@ -90,7 +89,7 @@ Restart=always
WantedBy=multi-user.target
```

8. Nihoyat, servicega start bering va ishga tushiring
**8->** Nihoyat, servicega start bering va ishga tushiring

```bash
sudo systemctl daemon-reload
Expand All @@ -100,25 +99,25 @@ sudo systemctl status postgres_exporter
```
## postgres_exporterni prometheus bilan integratsiya qilish

1. posres_exporterni Prometheus bilan integratsiya qilish uchun prometheus o'rnatilgan serverga kirib `prometheus.yml` konfigratsiya fayliga quyidagi konfigatsiyalarni qo'shishingiz kerak.
**1->** posres_exporterni Prometheus bilan integratsiya qilish uchun prometheus o'rnatilgan serverga kirib `prometheus.yml` konfigratsiya fayliga quyidagi konfigatsiyalarni qo'shishingiz kerak.

```bash
sudo systemctl stop prometheus
sudo nano /etc/prometheus/prometheus.yml
```
2. scrape uchun yangi target qo'shamiz.
**2->** scrape uchun yangi target qo'shamiz.

```bash filename="/etc/prometheus/prometheus.yml"
— job_name: postgres_exporter
— job_name: 'postgres_exporter'
static_configs:
— targets: [0.0.0.0:9187]
— targets: ['0.0.0.0:9187']
```
`0.0.0.0` o'rniga postgres_exporter o'rnatilgan serveringiz IP manzilini yozasiz va faylni saqlab prometheusni qayta ihsga tushirasiz.
```bash
sudo systemctl restart prometheus
```
## Grafana dashboarda metrikalarni vizualizatsiya qilish
Nihoyat biz barcha bosqichlarni tugatdik endigi navbat Grafana dashboardga. PostgreSQL monitoring ucun bir nechta dashboardlar mavjud ularni hohsingiz v atalabingizga qarab tanlab olaverasiz.
Nihoyat biz barcha bosqichlarni tugatdik endigi navbat Grafana dashboardga. PostgreSQL monitoring ucun bir nechta dashboardlar mavjud ularni hohishingiz va talabingizga qarab tanlab olaverasiz.

![wordpress](/images/tutorials/database/image.png)
![wordpress](/images/tutorials/database/2.png)
Expand All @@ -128,4 +127,25 @@ Rasmda [PostgreSQL Database(ID: 9628)](https://grafana.com/grafana/dashboards/96
Agar siz Grafanaga dashboard qo'ya olmagan bo'lsangiz Grafanaga dashboard qo'yicha bo'yicha quyidagi qo'llanmani o'qib chiqing. [Grafana Dashboardni import qilish](https://devops-journey.uz/tutorials/article/gnp-monitoring#grafana-dashboardni-import-qilish)


Umid qilamanki sizda barchasi muvafaqqiyatli bo'ldi :)
Umid qilamanki sizda barchasi muvafaqqiyatli bo'ldi :)

## Qo'shimcha

<Callout type="info" emoji="">

* [**PostgreSQLga kirish**](https://devops-journey.uz/guides/database/postgresql-kirish)
* [**Serverlarni monitoring qilish**](https://devops-journey.uz/tutorials/article/gnp-monitoring)
* [**Linux Serverlarga Postgresql o'rnatish**](https://devops-journey.uz/guides/database/postgresql-ornatish)
* [**Kubernetes Monitoring**](https://devops-journey.uz/guides/k8s/kubernetes-monitoring)


**Sana:** 2023.10.15(2023-yil 15-oktabr)

**Oxirgi yangilanish:** 2024.02.08(2024-yil 8-fevral)

**Muallif: Otabek Ismoilov**

| [Telegram](https://t.me/Otabek_Ismoilov) | [Github](https://github.com/ismoilovdevml) | [LinkedIn](https://www.linkedin.com/in/otabek-ismoilov-8625b0222/) |
| - | - | - |

</Callout>
91 changes: 73 additions & 18 deletions pages/guides/database/postgresql-ornatish.en-UZ.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { Callout } from "nextra-theme-docs";

# Linux Serverlarga Postgresql o'rnatish
![postgresql-ornatish](/images/tutorials/database/postgresql.png)

# Linux Serverlarga Postgresql o'rnatish

## Kirish

Expand All @@ -17,11 +18,11 @@ U bitta mashinadan tortib ma'lumotlar ombori yoki bir vaqtning o'zida ko'plab fo

## Ubuntu serverlarga Postgres o'rnatish

### PostgreSQL Apt Repository
**1->** PostgreSQL Apt Repository

Agar Ubuntu versiyangizga kiritilgan versiya siz xohlagan versiya bo'lmasa, PostgreSQL Apt Repository dan foydalanishingiz mumkin. Ushbu repositoriya sizning oddiy tizimlaringiz va patch management bilan integratsiyalanadi va PostgreSQL-ni qo'llab-quvvatlash muddati davomida PostgreSQL-ning barcha qo'llab-quvvatlanadigan versiyalari uchun avtomatik yangilanishlarni ta'minlaydi.

PostgreSQL Apt Repository Ubuntu ning joriy versiyalarini qo'llab-quvvatlaydi:
PostgreSQL Apt Repository Ubuntuning joriy versiyalarini qo'llab-quvvatlaydi:

* kinetic (22.10, LTS bo'lmagan)
* jammy (22.04, LTS)
Expand All @@ -38,7 +39,7 @@ quyidagi arxitekturalar bo'yicha:
Apt Repositorydan foydalanib PostgreSQL-ni o'rnatish:

```bash
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql
Expand All @@ -61,14 +62,15 @@ quyidagi arxitekturalar bo'yicha:
* ppc64el

Postgresqlni Debianga o'rnatish quyidagicha:

```bash
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql
```

## Redhat oilasiga mansub linux serverlarga Postgresql o'rnatish
## Redhat oilasiga mansub linux serverlar

Red Hat distributivlar oilasiga quyidagilar kiradi:

Expand All @@ -78,33 +80,68 @@ Red Hat distributivlar oilasiga quyidagilar kiradi:
* Fedora
* Oracle Linux

RHEL 6 va 7
**Red Hat Enterprise, CentOS, Scientific yoki Oracle version 6(x86_64)**

```bash
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql16-server
sudo service postgresql-16 initdb
sudo chkconfig postgresql-16 on
sudo service postgresql-16 start
```

**Red Hat Enterprise, CentOS, Scientific yoki Oracle version 7(x86_64)**

```bash
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
```

**Red Hat Enterprise, Rocky, Almalinux yoki Oracle version 8(x86_64)**

```bash
yum install postgresql-server
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
```

RHEL 8 va Fedora
**Red Hat Enterprise, Rocky, Almalinux yoki Oracle version 9(x86_64)**

```bash
dnf install postgresql-server
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
```

RHEL / Rocky Linux / CentOS / SL / OL 7, 8, 9 yoki Fedora 36 va undan keyingi versiyalar uchun:
**Fedora 38(x86_64)**

```bash
postgresql-setup --initdb
systemctl enable postgresql.service
systemctl start postgresql.service
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-38-x86_64/pgdg-fedora-repo-latest.noarch.rpm
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
```
**Fedora 39(x86_64)**

RHEL / CentOS / SL / OL 6 uchun
```bash
service postgresql initdb
chkconfig postgresql on
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-39-x86_64/pgdg-fedora-repo-latest.noarch.rpm
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
```

## PostgreSQL Rolelari va ma'lumotlar bazalaridan(Database) foydalanish
## PostgreSQL rolelari va databasedan foydalanish

Postgresql o'rnatganingizdan keyin uni serveringizda ishga tushirib statusini ko'rishingiz kerak

Expand Down Expand Up @@ -235,4 +272,22 @@ You are connected to database "asilbek" as user "asilbek" via socket in "/var/ru

<Callout type="info" emoji="">
E'tibor bering birinchi marta postgres user bilan kirganimizda terminal `postgres=# ` edi hozir biz yangi role ochin yangi user ochib kirganimizdan keyin `asilbek=# ` ga o'zgardi
</Callout>

## Qo'shimcha

<Callout type="info" emoji="">

* [**PostgreSQLga kirish**](https://devops-journey.uz/guides/database/postgresql-kirish)
* [**PostgreSQL Monitoring**](https://devops-journey.uz/guides/database/postgres-monitoring)

**Sana:** 2023.08.17(2023-yil 17-avgust)

**Oxirgi yangilanish:** 2024.02.08(2024-yil 8-fevral)

**Muallif: Otabek Ismoilov**

| [Telegram](https://t.me/Otabek_Ismoilov) | [Github](https://github.com/ismoilovdevml) | [LinkedIn](https://www.linkedin.com/in/otabek-ismoilov-8625b0222/) |
| - | - | - |

</Callout>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/tutorials/database/postgresql.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit eaa524e

Please sign in to comment.