

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Connect ke sumber data MySQL
<a name="using-mysql-in-AMG"></a>

 Tambahkan sumber data MySQL untuk dapat menanyakan dan memvisualisasikan data dari database yang kompatibel dengan MySQL. 

**penting**  
Grafana versi 8.0 mengubah struktur data yang mendasari untuk frame data untuk sumber data MySQL, Postgres, dan Microsoft SQL Server. Akibatnya, hasil kueri deret waktu dikembalikan dalam format lebar. Untuk informasi selengkapnya, lihat [Format lebar](https://grafana.com/developers/plugin-tools/introduction/data-frames#wide-format) dalam dokumentasi bingkai data Grafana.  
Untuk membuat visualisasi Anda berfungsi seperti sebelumnya, Anda mungkin harus melakukan beberapa migrasi manual. Salah satu solusi didokumentasikan di Github di [Postgres/MySQL/MSSQL: Memecahkan perubahan di v8.0 terkait dengan kueri deret waktu dan](https://github.com/grafana/grafana/issues/35534) urutan kolom data.

## Menambahkan sumber data
<a name="mysql-adding-the-data-source"></a>

1.  Buka menu samping dengan memilih ikon Grafana di header atas. 

1.  Di menu samping di bawah tautan **Dasbor**, Anda harus menemukan tautan bernama **Sumber Data**. 

1.  Pilih tombol **\$1 Tambahkan sumber data** di header atas. 

1.  Pilih **MySQL** dari daftar dropdown Type**.** 

### Opsi sumber data
<a name="mysql-data-source-options"></a>


|  Nama  |  Deskripsi  | 
| --- | --- | 
|  Name  |  Nama sumber data. Ini adalah bagaimana Anda melihat sumber data di panel dan kueri.  | 
|  Default  |  Sumber data default berarti bahwa itu akan dipilih sebelumnya untuk panel baru.  | 
|  Host  |  IP address/hostname dan port opsional dari instance MySQL Anda.  | 
|  Database  |  Nama database MySQL Anda.  | 
|  User  |  Login/nama pengguna database pengguna.  | 
|  Password  |  Kata sandi pengguna basis data.  | 
|  Max open  |  Jumlah maksimum koneksi terbuka ke database, default unlimited (Grafana v5.4\$1).  | 
|  Max idle  |  Jumlah maksimum koneksi di kolam koneksi idle, default 2 (Grafana v5.4\$1).  | 
|  Max lifetime  |  Jumlah maksimum waktu dalam hitungan detik koneksi dapat digunakan kembali, default 14400 /4 jam. Ini harus selalu lebih rendah dari [wait\$1timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout) yang dikonfigurasi di MySQL (Grafana v5.4\$1).  | 

### Interval waktu min
<a name="mysql-min-time-interval"></a>

 Batas bawah untuk `$_interval` `$_interval_ms` variabel. Disarankan untuk diatur untuk menulis frekuensi, misalnya `1m` jika data Anda ditulis setiap menit. Opsi ini juga dapat berada overridden/configured di panel dasbor di bawah opsi sumber data. Nilai ini **harus** diformat sebagai angka diikuti oleh pengidentifikasi waktu yang valid; misalnya, `1m` (1 menit) atau `30s` (30 detik). Pengidentifikasi waktu berikut didukung. 


|  Pengidentifikasi  |  Deskripsi  | 
| --- | --- | 
|  y  |  Tahun  | 
|  M  |  Bulan  | 
|  w  |  Minggu  | 
|  d  |  Hari  | 
|  h  |  Jam  | 
|  m  |  Menit  | 
|  s  |  Detik  | 
|  ms  |  Milidetik  | 

### Izin pengguna basis data
<a name="database-user-permissions-important"></a>

**penting**  
 Pengguna database yang Anda tentukan saat Anda menambahkan sumber data harus diberikan hanya izin SELECT pada database dan tabel tertentu yang ingin Anda kueri. Grafana tidak memvalidasi bahwa kueri aman. Kueri dapat mencakup pernyataan SQL apa pun. Misalnya, pernyataan seperti `USE otherdb;` dan `DROP TABLE user;` akan dijalankan. Untuk melindungi dari hal ini, kami sangat menyarankan Anda membuat pengguna MySQL tertentu dengan izin terbatas.

 Contoh kode berikut menunjukkan membuat pengguna MySQL tertentu dengan izin terbatas.

```
 CREATE USER 'grafanaReader' IDENTIFIED BY 'password';
 GRANT SELECT ON mydatabase.mytable TO 'grafanaReader';
```

 Untuk memberikan akses ke lebih banyak database dan tabel, Anda dapat menggunakan karakter wildcard (`*`) sebagai pengganti database atau tabel jika Anda mau. 

## Editor kueri
<a name="mysql-query-editor"></a>

 Anda menemukan editor kueri MySQL di tab metrik dalam mode edit panel. Anda masuk ke mode edit dengan memilih judul panel, lalu **Edit**. 

 Editor kueri memiliki tautan **SQL yang dihasilkan** yang muncul setelah kueri dijalankan, saat dalam mode edit panel. Pilih itu, dan itu akan memperluas dan menampilkan string SQL interpolasi mentah yang dijalankan. 

### Pilih tabel, kolom waktu, dan kolom metrik (DARI)
<a name="select-table-time-column-and-metric-column-from"></a>

 Saat Anda memasuki mode edit untuk pertama kalinya atau menambahkan kueri baru, Grafana akan mencoba mengisi ulang pembuat kueri dengan tabel pertama yang memiliki kolom stempel waktu dan kolom numerik. 

 Di bidang FROM, Grafana akan menyarankan tabel yang ada di database yang dikonfigurasi. Untuk memilih tabel atau tampilan di database lain yang dapat diakses oleh pengguna database Anda, Anda dapat memasukkan nama yang memenuhi syarat secara manual (database.table) seperti. `otherDb.metrics` 

 Kolom kolom Waktu mengacu pada nama kolom yang memegang nilai waktu Anda. Memilih nilai untuk bidang kolom Metrik adalah opsional. Jika nilai dipilih, bidang kolom Metrik akan digunakan sebagai nama seri. 

 Saran kolom metrik hanya akan berisi kolom dengan tipe data teks (teks, tinytext, mediumtext, longtext, varchar, char). Jika Anda ingin menggunakan kolom dengan tipe data yang berbeda sebagai kolom metrik, Anda dapat memasukkan nama kolom dengan pemeran:`CAST(numericColumn as CHAR)`. Anda juga dapat memasukkan ekspresi SQL arbitrer di bidang kolom metrik yang mengevaluasi tipe data teks seperti. `CONCAT(column1, " ", CAST(numericColumn as CHAR))`

### Kolom dan fungsi agregasi (SELECT)
<a name="columns-and-aggregation-functions-select"></a>

 Di `SELECT` baris, Anda dapat menentukan kolom dan fungsi apa yang ingin Anda gunakan. Di kolom kolom, Anda dapat menulis ekspresi arbitrer alih-alih nama kolom seperti`column1 * column2 / column3`. 

 Jika Anda menggunakan fungsi agregat, Anda harus mengelompokkan set hasil Anda. Editor akan secara otomatis menambahkan `GROUP BY time` jika Anda menambahkan fungsi agregat. 

 Anda dapat menambahkan kolom nilai lebih lanjut dengan memilih tombol plus dan memilih `Column` dari menu. Beberapa kolom nilai akan diplot sebagai seri terpisah di panel grafik. 

### Data penyaringan (WHERE)
<a name="mysql-filter-data-where"></a>

 Untuk menambahkan filter, pilih ikon plus di sebelah kanan `WHERE` kondisi. Anda dapat menghapus filter dengan memilih pada filter dan memilih`Remove`. Filter untuk rentang waktu yang dipilih saat ini secara otomatis ditambahkan ke kueri baru.

### Grup Oleh
<a name="mysql-group-by"></a>

 Untuk mengelompokkan berdasarkan waktu atau kolom lainnya, pilih ikon plus di akhir baris GROUP BY. Daftar tarik-turun saran hanya akan menampilkan kolom teks dari tabel yang Anda pilih saat ini tetapi Anda dapat memasukkan kolom apa pun secara manual. Anda dapat menghapus grup dengan memilih item dan kemudian memilih`Remove`. 

 Jika Anda menambahkan pengelompokan apa pun, semua kolom yang dipilih harus memiliki fungsi agregat yang diterapkan. Pembuat kueri akan secara otomatis menambahkan fungsi agregat ke semua kolom tanpa fungsi agregat saat Anda menambahkan pengelompokan. 

#### Pengisian celah
<a name="mysql-gap-filling"></a>

 Grafana dapat mengisi nilai yang hilang saat Anda mengelompokkan berdasarkan waktu. Fungsi waktu menerima dua argumen. Argumen pertama adalah jendela waktu yang ingin Anda kelompokkan, dan argumen kedua adalah nilai yang Anda inginkan Grafana untuk mengisi item yang hilang. 

### Mode editor teks (mentah)
<a name="mysql-text-editor-mode-raw"></a>

 Anda dapat beralih ke mode editor kueri mentah dengan memilih ikon hamburger dan memilih **mode Switch editor** atau dengan memilih **Edit SQL** di bawah kueri. 

**catatan**  
 Jika Anda menggunakan editor kueri mentah, pastikan kueri Anda setidaknya memiliki `ORDER BY time` dan filter pada rentang waktu yang dikembalikan. 

## Makro
<a name="mysql-macros"></a>

 Untuk menyederhanakan sintaks dan memungkinkan bagian dinamis, seperti filter rentang tanggal, kueri dapat berisi makro. 


|  Contoh makro  |  Deskripsi  | 
| --- | --- | 
|  \$1\$1\$1time(dateColumn)  |  Akan diganti dengan ekspresi untuk dikonversi ke stempel waktu UNIX dan mengganti nama kolom menjaditime\$1sec; misalnya, UNIX\$1TIMESTAMP (DateColumn) sebagai time\$1sec. | 
|  \$1\$1\$1timeEpoch(dateColumn)  |  Akan diganti dengan ekspresi untuk dikonversi ke stempel waktu UNIX dan mengganti nama kolom menjaditime\$1sec; misalnya, UNIX\$1TIMESTAMP (DateColumn) sebagai time\$1sec.  | 
|  \$1\$1\$1timeFilter(dateColumn)  |  Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan. Misalnya, DateColumn BETWEEN FROM\$1UNIXTIME (1494410783) DAN FROM\$1UNIXTIME (1494410983). | 
|  \$1\$1\$1timeFrom()  |  Akan diganti dengan dimulainya pemilihan waktu yang sedang aktif. Misalnya, FROM\$1UNIXTIME (1494410783).  | 
|  \$1\$1\$1timeTo()  |  Akan diganti pada akhir pemilihan waktu yang sedang aktif. Misalnya, FROM\$1UNIXTIME (1494410983).  | 
|  \$1\$1\$1timeGroup(dateColumn,'5m')  |  Akan diganti dengan ekspresi yang dapat digunakan dalam klausa GROUP BY. Misalnya, cast (cast (UNIX\$1TIMESTAMP (DateColumn)/(300) sebagai ditandatangani) 300 sebagai ditandatangani), \$1  | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', 0)  |  Sama seperti baris sebelumnya, tetapi dengan parameter isian sehingga titik yang hilang dalam seri itu akan ditambahkan oleh grafana dan 0 akan digunakan sebagai nilai.  | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', NULL)  |  Sama seperti di atas tetapi NULL akan digunakan sebagai nilai untuk poin yang hilang.  | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', previous)  |  Sama seperti di atas tetapi nilai sebelumnya dalam seri itu akan digunakan sebagai nilai isi jika tidak ada nilai yang terlihat namun NULL akan digunakan (hanya tersedia di Grafana 5.3\$1).  | 
|  \$1\$1\$1timeGroupAlias(dateColumn,'5m')  |  Akan diganti identik dengan \$1\$1\$1timeGroup tetapi dengan alias kolom tambahan (hanya tersedia di Grafana 5.3\$1).  | 
| \$1\$1\$1unixEpochFilter(dateColumn) | Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan dengan waktu yang direpresentasikan sebagai stempel waktu Unix. Misalnya, dateColumn > 1494410783 AND dateColumn < 1494497183. | 
| \$1\$1\$1unixEpochFrom() | Akan diganti dengan dimulainya pemilihan waktu aktif saat ini sebagai stempel waktu Unix. Misalnya, 1494410783. | 
| \$1\$1\$1unixEpochTo() | Akan diganti dengan akhir pemilihan waktu aktif saat ini sebagai stempel waktu Unix. Misalnya, 1494497183. | 
| \$1\$1\$1unixEpochNanoFilter(dateColumn) | Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan dengan waktu yang direpresentasikan sebagai stempel waktu nanodetik. Misalnya, dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872. | 
| \$1\$1\$1unixEpochNanoFrom() | Akan digantikan oleh dimulainya pemilihan waktu aktif saat ini sebagai stempel waktu nanodetik. Misalnya, 1494410783152415214. | 
| \$1\$1\$1unixEpochNanoTo() | Akan diganti pada akhir pemilihan waktu aktif saat ini sebagai stempel waktu nanodetik. Misalnya, 1494497183142514872. | 
| \$1\$1\$1unixEpochGroup(dateColumn,"5m", [fillmode]) | Sama seperti \$1\$1\$1timeGroup tetapi untuk waktu yang disimpan sebagai stempel waktu Unix (hanya tersedia di Grafana 5.3\$1). | 
| \$1\$1\$1unixEpochGroupAlias(dateColumn,"5m", [fillmode])` | Sama seperti di atas tetapi juga menambahkan alias kolom (hanya tersedia di Grafana 5.3\$1). | 

 Editor kueri memiliki tautan **SQL yang Dihasilkan** yang muncul setelah kueri berjalan, saat dalam mode edit panel. Pilih itu, dan itu akan memperluas dan menampilkan string SQL interpolasi mentah yang dijalankan. 

## Kueri tabel
<a name="mysql-table-queries"></a>

 Jika opsi **Format sebagai** kueri diatur ke **Tabel**, pada dasarnya Anda dapat melakukan semua jenis kueri SQL. Panel tabel akan secara otomatis menampilkan hasil kolom dan baris apa pun yang dikembalikan kueri Anda. 

 Kode berikut menunjukkan contoh query. 

```
SELECT
  title as 'Title',
  user.login as 'Created By' ,
  dashboard.created as 'Created On'
 FROM dashboard
INNER JOIN user on user.id = dashboard.created_by
WHERE $__timeFilter(dashboard.created)
```

 Anda dapat mengontrol nama kolom panel Tabel dengan menggunakan sintaks pemilihan kolom `as` SQL biasa. 

## Pertanyaan deret waktu
<a name="mysql-time-series-queries"></a>

 Jika Anda menetapkan **Format sebagai** **deret Waktu**, untuk digunakan dalam panel grafik misalnya, kueri harus mengembalikan kolom bernama `time` yang mengembalikan datetime SQL atau tipe data numerik yang mewakili epoch Unix. Setiap kolom kecuali `time` dan `metric` diperlakukan sebagai kolom nilai. Anda dapat mengembalikan kolom bernama `metric` yang digunakan sebagai nama metrik untuk kolom nilai. Jika Anda mengembalikan beberapa kolom nilai dan kolom bernama`metric`, kolom ini digunakan sebagai awalan untuk nama seri (hanya tersedia di Grafana 5.3\$1).

 Kumpulan hasil kueri deret waktu harus diurutkan berdasarkan waktu. 

 Contoh kode berikut menunjukkan `metric` kolom. 

```
SELECT
  $__timeGroup(time_date_time,'5m'),
  min(value_double),
  'min' as metric
FROM test_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
```

 Contoh kode berikut menunjukkan menggunakan parameter fill di \$1\$1\$1timeGroup makro untuk mengkonversi nilai null menjadi nol sebagai gantinya. 

```
SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  measurement
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, measurement
ORDER BY time
```

 Contoh kode berikut menunjukkan beberapa kolom. 

```
SELECT
  $__timeGroup(time_date_time,'5m'),
  min(value_double) as min_value,
  max(value_double) as max_value
FROM test_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
```

Tidak ada dukungan untuk grup dinamis berdasarkan waktu berdasarkan rentang waktu dan lebar panel.

## Templating
<a name="mysql-templating"></a>

 Alih-alih hardcoding hal-hal seperti server, aplikasi dan nama sensor dalam kueri metrik Anda, Anda dapat menggunakan variabel di tempatnya. Variabel ditampilkan sebagai kotak pilih dropdown di bagian atas dasbor. Anda dapat menggunakan kotak dropdown ini untuk mengubah data yang ditampilkan di dasbor Anda. 

 Untuk informasi selengkapnya tentang variabel template dan template, lihat[Template](templates-and-variables.md#templates). 

### Variabel kueri
<a name="mysql-query-variable"></a>

 Jika Anda menambahkan variabel template dari jenisnya`Query`, Anda dapat menulis kueri MySQL yang dapat mengembalikan hal-hal seperti nama pengukuran, nama kunci, atau nilai kunci yang ditampilkan sebagai kotak pilih tarik-turun. 

 Misalnya, Anda dapat memiliki variabel yang berisi semua nilai untuk `hostname` kolom dalam tabel jika Anda menentukan kueri seperti ini dalam pengaturan *kueri* variabel template. 

```
SELECT hostname FROM my_host
```

 Kueri dapat mengembalikan beberapa kolom dan Grafana akan secara otomatis membuat daftar dari mereka. Misalnya, query berikut akan mengembalikan daftar dengan nilai-nilai dari `hostname` dan`hostname2`. 

```
SELECT my_host.hostname, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_other_host.city
```

 Untuk menggunakan makro yang bergantung pada rentang waktu seperti `$__timeFilter(column)` dalam kueri Anda, mode penyegaran variabel template harus disetel ke *On Time Range Change*. 

```
SELECT event_name FROM event_log WHERE $__timeFilter(time_column)
```

 Pilihan lain adalah kueri yang dapat membuat key/value variabel. Query harus mengembalikan dua kolom yang diberi nama `__text` dan`__value`. Nilai `__text` kolom harus unik (jika tidak unik, nilai pertama digunakan). Opsi dalam daftar dropdown akan memiliki teks dan nilai sehingga Anda dapat memiliki nama ramah sebagai teks dan ID sebagai nilainya.

Contoh kode berikut menunjukkan query dengan `hostname` sebagai teks dan `id` sebagai nilai. 

```
SELECT hostname AS __text, id AS __value FROM my_host
```

 Anda juga dapat membuat variabel bersarang. Misalnya, jika Anda memiliki variabel lain bernama`region`. Kemudian Anda dapat meminta variabel host hanya menampilkan host dari wilayah yang dipilih saat ini dengan kueri seperti ini (jika `region` adalah variabel multi-nilai maka gunakan operator `IN` perbandingan daripada `=` untuk mencocokkan dengan beberapa nilai). 

```
SELECT hostname FROM my_host  WHERE region IN($region)
```

#### Menggunakan `__searchFilter` untuk memfilter hasil dalam Variabel Kueri
<a name="using-__searchfilter-to-filter-results-in-query-variable"></a>

 Menggunakan `__searchFilter` di bidang kueri akan memfilter hasil kueri berdasarkan jenis pengguna di kotak pilih dropdown. Ketika tidak ada yang dimasukkan oleh pengguna, nilai default untuk `__searchFilter` adalah`%`. 

**catatan**  
 Penting bahwa Anda mengelilingi `__searchFilter` ekspresi dengan tanda kutip karena Grafana tidak melakukan ini untuk Anda. 

 Contoh berikut menunjukkan cara menggunakan `__searchFilter` sebagai bagian dari bidang query untuk mengaktifkan pencarian `hostname` sementara pengguna mengetik di kotak pilih dropdown. 

```
SELECT hostname FROM my_host  WHERE hostname LIKE '$__searchFilter'
```

### Menggunakan variabel dalam kueri
<a name="using-variables-in-queries-2"></a>

 Dari Grafana 4.3.0 hingga 4.6.0, variabel template selalu dikutip secara otomatis sehingga jika itu adalah nilai string jangan membungkusnya dalam tanda kutip di klausa where. 

 Dari Grafana 4.7.0, nilai variabel template hanya dikutip jika variabel template adalah a. `multi-value` 

 Jika variabel adalah variabel multi-nilai, gunakan operator `IN` perbandingan daripada `=` untuk mencocokkan dengan beberapa nilai. 

 Ada dua sintaks: 

 `$<varname>`Contoh dengan variabel template bernama`hostname`: 

```
SELECT
  UNIX_TIMESTAMP(atimestamp) as time,
  aint as value,
  avarchar as metric
FROM my_table
WHERE $__timeFilter(atimestamp) and hostname in($hostname)
ORDER BY atimestamp ASC
```

 `[[varname]]`Contoh dengan variabel template bernama`hostname`: 

```
SELECT
  UNIX_TIMESTAMP(atimestamp) as time,
  aint as value,
  avarchar as metric
FROM my_table
WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp ASC
```

#### Mematikan kutipan untuk variabel multi-nilai
<a name="disabling-quoting-for-multi-value-variables"></a>

 Grafana secara otomatis membuat string yang dikutip dan dipisahkan koma untuk variabel multi-nilai. Misalnya: jika `server01` dan `server02` dipilih maka akan diformat sebagai:`'server01', 'server02'`. Untuk menonaktifkan kutipan, gunakan opsi pemformatan csv untuk variabel. 

 `${servers:csv}` 

 Untuk informasi selengkapnya tentang opsi pemformatan variabel, lihat[Opsi format variabel lanjutan](templates-and-variables.md#advanced-variable-format-options). 

## Anotasi
<a name="mysql-annotations"></a>

 Anda dapat menggunakan anotasi untuk melapisi informasi acara yang kaya di atas grafik. Anda menambahkan kueri anotasi melalui menu Dasbor/tampilan Anotasi. Untuk informasi selengkapnya, lihat . 

 Contoh kode berikut menunjukkan query menggunakan kolom waktu dengan nilai-nilai epoch. 

```
SELECT
  epoch_time as time,
  metric1 as text,
  CONCAT(tag1, ',', tag2) as tags
FROM
  public.test_data
WHERE
  $__unixEpochFilter(epoch_time)
```

Kode contoh berikut menunjukkan kueri wilayah menggunakan kolom waktu dan waktu akhir dengan nilai epoch. 

**catatan**  
 Hanya tersedia di Grafana v6.6\$1. 

```
SELECT
  epoch_time as time,
  epoch_timeend as timeend,
  metric1 as text,
  CONCAT(tag1, ',', tag2) as tags
FROM
  public.test_data
WHERE
  $__unixEpochFilter(epoch_time)
```

 Contoh kode berikut menunjukkan query menggunakan kolom waktu tipe date/time data SQL asli. 

```
SELECT
  native_date_time as time,
  metric1 as text,
  CONCAT(tag1, ',', tag2) as tags
FROM
  public.test_data
WHERE
  $__timeFilter(native_date_time)
```


|  Nama  |  Deskripsi  | 
| --- | --- | 
|  time  |  Nama date/time lapangan. Bisa berupa kolom dengan tipe date/time data SQL asli atau nilai epoch.  | 
|  timeend  |  Nama opsional dari date/time bidang akhir. Bisa berupa kolom dengan tipe date/time data SQL asli atau nilai epoch.  | 
|  text  |  Bidang deskripsi acara.  | 
|  tags  |  Nama bidang opsional yang akan digunakan untuk tag peristiwa sebagai string yang dipisahkan koma.  | 

## Peringatan
<a name="mysql-alerting"></a>

 Kueri deret waktu harus berfungsi dalam kondisi peringatan. Kueri yang diformat tabel belum didukung dalam kondisi aturan peringatan. 