مانیتورینگ کامل پایگاه های داده
پایگاه های داده به عنوان یکی از ستونهای اصلی آی تی در دهه های اخیر از اهمیت بالایی در سازمانها برخوردار هستند. بندرت شرکتهایی وجود دارند که حتی یک دیتابیس هم نداشته باشند. آنها اطلاعات مهم از جمله اطلاعات مربوط به امور مالی، مشتریان و کارمندان خود را در دیتابیس نگهداری میکنند. به همین منظور حصول اطمینان از کارایی و دسترس پذیری پایگاه های داده یکی از ضروری ترین و اصلی ترین نگرانی های سازمانها و مدیران شبکه است.
زبیکس توانایی مانیتور کردن کوچکترین جزئیات دیتابیسها ی زیر را دارد.
یکی از مهمترین سیستم های پایگاه داده که امروزه در اکثر سازمان ها مورد استفاده قرار می گیرد SQL Server می باشد. در کشور ما نیز اکثر سازمان ها و شرکت ها از SQL Server برای ذخیره سازی اطلاعات حساس و مهم خود استفاده می کنند.
لذا علاوه بر حفظ و نگهداری از آن، بازدهی و کارایی بالای آن نیز دارای اهمیت می باشد. Performance پایگاه داده و مانیتور کردن آن از مواردی است که برای مدیران IT سازمان ها مهم و تعیین کننده می باشد. اجرای صحیح Job ها، وجود ارتباط بین پایگاه داده و برنامه های کاربردی، پاسخ دهی به موقع و مناسب به درخواستها، همگی از مواردی است که بر کارکرد دیتابیس تاثیر گذار است.
سیستم جامع مانیتورینگ زبیکس با پوشش موارد فوق این امکان را فراهم می آورد تا در صورت ایجاد خلل یا کاهش بازدهی سیستم، مدیران را با خبر ساخته و علت وقوع آن را ردیابی و گزارش دهی کند.
برخی از ویژگی های مانیتورینگ پایگاه داده SQL Server :
-میزان استفاده SQL Server از CPU : سروری که برای SQL انتخاب می شود باید علاوه بر پاسخ دهی به پردازش های سیستم عامل که معمولا windows server است به سرویس SQL Server نیز پاسخ دهی مناسبی داشته باشد.
-میزان استفاده SQL Server از مموری: میزان فضای موجود برای اجرای SQL Server از موارد تاثیر گذار بر بازدهی و کارایی دیتابیس می باشد. در صورت کم بودن این فضا میزان ورودی و خروجی و در نتیجه مصرف پردازنده افزایش یافته و باعث کاهش کارایی SQL Server خواهد شد.
-حجم داده های ذخیره شده: شامل مواردی از قبیل Data Files, Tempdb, Log Files می باشد.
-بررسی اجرا بودن سرویس SQL : در صورت اجرا نبودن سرویس، پس از گذشت مدت زمانی خاص ، زبیکس این قابلیت را دارد تا سرویس را اجرا یا ریستارت کند.
برخی از آیتم های مانیتور شده برای SQL Server
Description |
Name |
(Unused physical memory (not page file |
Available Mbytes |
The average wait time, in milliseconds, for each lock request that had to wait An average wait time longer than 500ms may indicate excessive blocking. This value should generally correlate to “Lock Waits/sec” and move up or down with it accordingly |
Average Wait Time |
The average latch wait time, in millisec- onds, for any latch requests that had to wait. This value should generally correlate to “Latch Waits/sec” and move up or down with it accordingly |
Avg Latch Waits Time |
Number of batch requests received per second, and is a good general indicator for the activity level of the SQL Server. This counter is highly dependent on the hardware and quality of code running on the server. The more powerful the hardware, the higher this number can be, even on poorly coded applications. A value of 1000 batch requests/sec is easily attainable though a typical 100Mbs NIC can only handle about 3000 batch requests/sec.Many other counter thresh- olds depend upon batch requests/sec while, in some cases, a low (or high) number does not point to poor processing power. You should frequently use this counter in combination with other counters, such as processor utilization or user connections.In version 2000, “Transactions/ overall activity, while versions 2005 and later use “Batch Requests/sec”. Versions 2005 prior to SP2, measure this counter differently and may lead to some misunderstandings. Read the footnote for more details
|
Batch Requests |
Long a stalwart counter used by SQL Server DBAs, this counter is no longer very useful. It monitors the percentage of data requests answer from the buffer cache since the last reboot. However, other counters are much better for showing current memory pressure that this one because it blows the curve. For example, PLE (page life expectancy) might suddenly drop from 2000 to 70, while buffer cache hit ration moves only from 98.2 to 98.1. Only be concerned by this counter if it’s value is regularly below 90 (for OLTP) or 80 (for very large OLAP) |
Buffer cache hit ratio |
Number of database pages in the buffer pool, as opposed to other usages for memory such as free pages, procedure cache, etc |
Database Pages |
Cumulative size (KB) of all the data files in the database including any automatic growth. Monitoring this counter is useful, for example, for determining the correct size of tempdb |
Data File(s) Size |
The number of latches in the last second that had to wait. Latches are lightweight means of holding a very transient server resource, such as an address in memory. |
Latch Waits |
The number of new locks and locks converted per second. This metric’s value should generally correspond to “Batch Re- quests/sec”. Values > 1000 may indicate queries are accessing very large numbers of rows and may benefit from tuning |
Lock Requests |
Shows the number of lock requests per second that timed out, including internal requests for NOWAIT locks. A value greater than zero might indicate that user queries are not completing. The lower this value is, the better |
Lock Timeouts |
The total time spent waiting across all transactions, in milliseconds, to acquire a lock in the last second. Because SQL Server records a lock at the end of a lock- ing event, remember that an application with huge transactions may have inflated lock wait times while still performing as expected. For example, an applica- tion that issues multi-million record updates might have very long lock wait times while performing exactly as it was designed |
Lock Waits |
The number of user logins per second. Any value over 2 may indicate insufficient connection pooling |
Logins |
The number of user logouts per second. Any value over 2 may indicate insufficient connection pooling |
Logouts |
Cumulative size, in (KB), of all the transaction log files for the specific database. Useful for deter- mining trends and utilization of the transaction log |
Log File(s) Size |
The cumulative used size of all the log files in the database |
Log File(s) Used Size |
Tells, on average, how many seconds SQL Server expects a data page to stay in cache. The target on an OLTP system should be at least 300 (5 min). When under 300, this may indicate poor index design (leading to increased disk I/O and less effective use of memory) or, simply, a potential shortage of memory |
Page life expectancy |
Number of physical database page reads issued. Normal OLTP workloads support 80 – 90 per second, but higher values may be a yellow flag for poor indexing or insufficient memory |
Page Reads |
< 20 per 100 Batch Requests/Sec Monitors the number of page splits per second which occur due to overflowing index pages and should be as low as possible. To avoid page splits, review table and index design to reduce non-sequential inserts or implement fillfactor and pad_index to leave more empty space per page. NOTE: A high value for this counter is not bad in situations where many new pages are being created, since it includes new page allocations |
Page Splits |
Number of database pages physically written to disk. Normal OLTP workloads support 80 – 90 per second. Values over 90 should be crossed checked with “lazy writer/sec” and “checkpoint” counters. If the other counters are also high, then it may indicate insufficient memory |
Page Writes |
(Number of times that Transact-SQL compilations occurred, per second (including recompiles The lower this value is the better. High values often indicate excessive adhoc querying and should be as low as possible. If excessive adhoc querying is happening, try rewriting the queries as procedures or invoke the queries using sp_ex- ecuteSQL. When rewriting isn’t possible, consider using a plan guide or setting the database to parameterization forced mode |
SQL Compilations |
Number of times, per second, that Transact-SQL objects attempted to be executed but had to be recompiled before completion. This number should be at or near zero, since recompiles can cause deadlocks and exclusive compile locks. This counter’s value should follow in proportion to “Batch Requests/sec” and “SQL Compilations/ sec”. This needs to be nil in your system as much as possible |
SQL Re-Compilations |
Percentage of elapsed time that the process threads spent executing code in privileged mode, like SQL Server I/O requests |
SQL Server %Privileged Time |
Percentage of processor time spent on SQL Server process threads.You may also wish to investigate other Process (sqlservr) such as Private Bytes, Virtual Bytes, Working Set, etc to get a fuller understanding of how SQL Server allocates certain segments of memory. Usually, these auxiliary counters provide contextual information and are not necessary for troubleshooting |
SQL Server %Processor Time |
Percentage of processor time spent on SSAS process threads |
SSAS %Processor Time |
Number of errors per second which takes a data- base offline or kills a user connection, respec- tively. Since these are severe errors, they should occur very infrequently |
SQL Server Errors |
Tells how many pages were “stolen” from the buffer pool to satisfy other memory needs, such as plan cache and workspace memory This number is a good metric to determine how much data is flowing into SQL Server caches and should remain proportionate to “Batch Requests/sec”. Also remember to look for where these stolen pages might be stolen from – optimizer memory, lock memory, and so forth |
Stolen Pages |
Shows the amount of memory that SQL Server wants to use based on the configured Max Server Memory |
Target SQL Server Memory |
The total latch wait time in milliseconds spent waiting for a latch in the last second. This value should stay stable compared to the number of latch waits per second |
Total Latch Wait Time |
Shows the amount of memory that SQL Server is currently using. This value should grow until its equal to Target Server Memory, as it popu- lates its caches and loads pages into memory. When it has finished, SQL Server is said to be in a “steady-state”. Until it is in steady-state, per- formance may be slow and IO may be higher |
Total SQL Server Memory |
The number of users currently connected to the SQL Server. This counter should roughly track with “Batch Requests/Sec”. They should generally rise and fall togeth- er. For example, blocking problems could be revealed by rising user connections, lock waits and lock wait time coupled with declining batch requests/sec |
User Connections |
- 1
- 2
یکی از زیرساختهای مهم و اساسی در حوزه خدمات IT در ارگان ها و سازمان ها، بانکهای اطلاعاتی هستند. اوراکل قدرتمندترین پایگاه داده جهان در اکثر سازمانها و شرکت های بزرگ این وظیفه را بر عهده دارد. از این رو مانیتورینگ آن جهت بررسی عملکرد صحیح و مناسب، لازم و ضروری است. سیستم قدرتمند مانیتورینگ زبیکس به خوبی میتواند عملکرد این بانک اطلاعاتی را که مانند یک ستون برای خدمات فناوری اطلاعات یک سازمان است، مورد بررسی قرار داده و رفتار اجرایی آن را برای مدیران به درستی نمایش دهد تا در صورت پدید آمدن کوچکترین خلل، سریعا عکس العملی مناسب، جهت بهبود وضعیت نشان دهد.همچنین مسئولان بخش IT ، می توانند با بازبینی شاخص های مربوط به اجرا و پاسخ دهی بانک اطلاعاتی، performance سیستم را رصد کرده و در صورت نیاز با ارتقا منابع، عملکرد آنرا بهبود بخشند.
با افزایش قدرت سرورها و گسترده شدن خدمات IT، بانک های اطلاعاتی از جمله اوراکل نیز از تکنیک های پیشرفته تری برای افزایش کارایی بانک اطلاعاتی استفاده می کنند. نحوه کش کردن اطلاعات و استفاده مناسب از بافر، سرویس دهی به تعداد زیاد کاربران، کنترل صحت اطلاعات، نگهداری از حجم انبوه اطلاعات، زمان پاسخ گویی مناسب، Load Balancing ، دسترسی پذیری بالا و ... از مزایای این بانک اطلاعاتی است که می توان نام برد.
با مانیتور کردن بانک اطلاعاتی اوراکل توسط سیستم مانیتورینگ زبیکس، میتوان وضعیت آنرا در گرافهای متنوع مشاهده کرد، دیدن شاخص های کنترلی به صورت لحظه به لحظه و یا به صورت تاریخچه جهت کنترل روند عملیاتی پایگاه داده از امکاناتی است که مانیتورینگ در اختیار ما قرار می دهد. از دیگر خصوصیات مانیتورینگ زبیکس می توان به تعیین شرایط و حد آستانه ها، سیستم اعلام هشدار و اطلاع رسانی هنگام وقوع اختلال اشاره کرد. بنابراین زبیکس دید روشنی از عملکرد بانک اطلاعاتی اوراکل در اختیار ما قرار می دهد که با بررسی مقادیر گرفته شده میتوان عملکرد پایگاه داده را ارزیابی کرده و در صورت مشاهده bottleneck نسبت به رفع آن اقدام کنیم.
برخی از آیتم های مانیتور شده برای Oracle
Description | Name |
Bytes sent via SQL*Net to client | bytes sent |
User Commits | commits |
db file parallel write | db parallel write |
db file scattered read | db scattered read |
db file sequential read waits | db sequential read |
db file single write | db single write |
Deadlocks | deadlocks |
direct path read | direct path read |
direct path write | direct path write |
Disk sorts ratio | disk sort |
enqueue waits | enqueue waits |
free buffer waits | free buffer waits |
Hard parse ratio | hard-parse-rati |
(Index fast full scans (full | index scan |
[Last applied archive log (at standby).Next items requires [timed_statistics = true | last applied log |
Last archived log sequence | last archived log |
latch free | latch free |
Logons current | logon current |
log file switch completion | log completion |
log file sync | log file sync |
log file parallel write | log parallel write |
SQL*Net roundtrips to/from client | net round trips |
Read Cache hit ratio | read cache hitratio |
Redo Writes | redo writes |
Table scan rows gotten | scans rows |
Size of all datafiles | size datafiles |
(Size of user data (without temp | size user data |
(Table scans (long tables | table scans |
(Instance Uptime (seconds | (uptime (sec |
Count of users connected to Oracle | users count |
User Rollbacks | user rollbacks |
(Oracle version (Banner | version |
- 1
- 2
از قویترین بانکهای اطلاعاتی متن باز و رایگان میتوان Postgresql را نام برد که تاکنون توانسته نظر اکثر طراحان و کاربران پایگاه داده را به خود جلب کند. پایگاه داده PostgreSQL یک سیستم مدیریت پایگاه داده رابطه ای شیئ یا ORDBMS است که این امکان را فراهم آورده تا حجم بسیار بزرگی از اطلاعات را نگهداری و مدیریت کند. این بانک اطلاعاتی محبوب قابلیت نصب بر روی سیستم های ویندوزی و لینوکسی را دارد.
جهت رسیدن به اوج کارایی و Performance بهتر استفاده کردن مناسب از منابعی که در اختیار دارد، لازم است که توسط پارامترهایی که در این بانک اطلاعاتی وجود دارد آنرا بهینه کنیم. بهینه سازی بسیار مهم و کاربردی است اما بدون مانیتورینگ این عمل غیرممکن است. با مانیتور کردن سیستم، شما از رخدادها قبل از اینکه به مشکلی بزرگتر تبدیل شود با خبر می شوید.
سیستم مانیتورینگ زبیکس توسط ارتباط برقرار کردن با بانک اطلاعاتی Postgresql ، از عملکرد آن گزارشگیری کرده و نتیجه را به صورت ترسیم کردن گرافها و ارائه آمار و ارقام پارامترها به مدیران، وضعیت بانک اطلاعاتی را به بهترین نحو نمایش می دهد.
برخی از آیتم های مانیتور شده برای دیتابیس های PostgreSQL
زبیکس میتواند به صورت خودکار بانک اطلاعاتی را پویش و دیتابیسهای موجود را پیدا کند. به این طریق آمار و اطلاعات آنها را جهت مانیتور کردن در اختیار ما قرار می دهد.
Name |
Active connections per database |
Cache hit ratio (%) per database |
Committed transactions per database |
DB Size per database |
Deadlocks per database |
Rolled back transactions per database |
Temp bytes per database |
Tuples deleted per database |
Tuples fetched per database |
Tuples inserted per database |
Tuples returned per database |
Tuples updated per database |
برخی از آیتم های مانیتور شده برای جداول PostgreSQL
اطلاع از وضعیت جداول درون هر دیتابیس نیز برای مدیران بانک اطلاعاتی جهت بهینه سازی پایگاه داده مفید است. سیستم مانیتورینگ زبیکس می تواند دید خوبی از وضعیت این جداول به ما دهد:
Name |
analyze count per table |
autoanalyze count per table |
autovacuum count per table |
cache hit ratio % per table |
number of dead tuples per table |
number of delete tuples (tuples/s) per table |
number of hot update tuples (tuples/s) per table |
number of index scan (scans/s) per table |
number of index tuples read (tuples/s) per table |
number of insert tuples (tuples/s) per table |
number of live tuples per table |
number of sequencial scan (scans/s) per table |
number of update tuples (tuples/s) per table |
vacuum count per table |
- 1
- 2
- 3