Monday, November 3, 2008
Log attributes (icon
) are monitoring attributes that capture messages in their context. This means that the data collection method does not just write isolated messages in the Alert Monitor, but also the content of a log or trace.
Features
Log attributes have a number of special features in the display of properties and methods. These are described here. If you want to display the properties of a log attribute, select the attribute in the alert monitoring tree and choose Properties.
Display "Current Value" like Group Box
If there are multiple messages in the selected log attribute, you can choose which message should be displayed:
- Always display only the newest message (Last incoming message)
- The message with the severest alert, irrespective of its age (Highest alert)
- The message with the severest alert that is not longer than a specified time (Maximum value from the last)
Alert Settings Group Box
You can select whether and how the messages for this log attribute should trigger alerts. Every message is assigned a color and a severity level. You can set as of which color and which level of severity an alert is to be triggered (From value), whether all messages should trigger the alert that is assigned to them (evaluation of Reported like), or whether no messages should trigger alerts (Never).
Internal Storage of Message Lines Group Box
The messages are stored in an internal message log. You can decide how many messages are stored (Maximum number of lines to be saved). If you select the radio button As much as possible, the system will store messages as long as there is enough space available in the monitoring segment of the shared memory.
See Also:
Detail Display for Log Attributes
Labels: Alert Monitor(CCMS) in SAP
Every monitoring tree element (MTE) has properties that contain more detailed information about the element. The properties are divided into two groups:
· Properties that depend on the type of the MTE; these are:
Properties of Log Attributes
Properties of Performance Attributes
Properties of Status Attributes
· Properties that are independent of the type of the MTE. These are called general properties.
The general properties of an MTE include a message class and message number; these contain a short description of the MTE. The general properties also contain information about possible alerts. However, as alerts can only be generated for monitoring attributes, the following properties apply only for the attributes that belong to the object:
· Criticality and severity of the alert that is associated with the MTE
· Maximum number of alerts to be stored for this MTE
· Conditions under which no alert is to be generated
By default, the properties for the different MTEs in an MTE class are identical, however, you can change the properties individually for single MTEs (see Changing Properties and Maintaining Methods).
Use
The general properties determine, above all, the handling of alerts. If alerts for particular MTE classes or individual MTEs are especially important for the monitoring of your IT landscape, you can ensure that these alerts are, for example, reported further up the alert monitoring tree, or that a large number of these alerts is stored in the monitoring segment, by changing the general properties.
Structure
The general properties are as follows:
| Property | Description |
| Message Class and | Message ID that contains a description of the MTE. You can change this is you have created your own message text |
| Severity of Alerts to be Triggered | Meaning of an alert; if two alerts have the same color, the alert with the higher severity is displayed further up in the alert monitoring tree (CCMS only uses values up to 50 here, so that you can ensure that this alert is displayed further up the alert monitoring tree by entering a higher severity) |
| Maximum Number of Alerts Kept | Limit of the number of alerts that are to be retained in the monitoring segment of shared memory |
| Which alerts should be kept? | all: Additional alerts for this MTE are stored as long as there is still free storage space in the monitoring segment, irrespective of the maximum number of alerts kept. If there is no more free storage space, half of the supernumerary alerts (that is, the alerts over the maximum number) are deleted.
The maximum number of alerts kept is 10, but there are 50 alerts for the MTE in the monitoring segment. If the segment is now full, the monitoring architecture reduces the number of alerts from 50 to 30, as half of the supernumerary 40 alerts are deleted. the oldest: If the maximum number of alerts kept is reached, no more alerts are stored for this MTE until alerts have been completed. the newest: If the maximum number of alerts kept is reached, the oldest existing alert is deleted for each new alert. We recommend this setting. |
| Do not trigger alerts within the first … | Avoids the generation of alerts after the application server is started, while there are no meaningful values for many MTEs (such as for the buffer quality) |
| In the absence of values deactivate after … | Number of seconds after which the MTE is assigned the color status gray with the message “Value is obsolete”; this provides the possibility of identifying inactive nodes |
| Also Trigger Heartbeat Alert | Option to generate an alert if no values are reported (see Triggering a Heartbeat Alert if No Values Are Reported) |

The number and selection of alerts that are to be stored have a critical importance for the function of the monitoring architecture: incorrect settings can cause the monitoring segment in which the alerts are stored to become full. We therefore recommend:
§ You should store the newest alerts. You can use the report RSAL_KEEPALTYPE_MODIFY to change all occurrences of All alerts should be kept to the newest alerts should be kept. Execute the report once for each affected SAP system and after every upgrade of the monitoring architecture.
§ You should complete alerts regularly to gain available storage area in the monitoring segment. With a large number of MTEs, it is useful to define conditions under which the system should automatically complete alerts.
§ Observe the Space subtree of the CCMS Selfmonitoring monitor. If there is insufficient free storage space in the monitoring segment, a corresponding alert is generated there.
Labels: Alert Monitor(CCMS) in SAP
Use
Performance attributes (symbol
) are monitoring attributes that collect certain reported performance data and calculate the average.
Features
In the display of the properties and methods, performance attributes have a number of special characteristics that are described here. To display the properties of a performance attribute, choose the attribute in the alert monitoring tree and choose Properties.
Comparison Value
In the Comparison Value group box, you define how the value of the performance attribute is to be calculated from the reported values. You have the choice between the last reported value (last reported), the average value of the last minute, last five minutes, or last fifteen minutes (Smoothing) and the average value of the last full quarter of an hour or hour (Average).
Threshold values
In this group box, you can edit the threshold values with which an alert is triggered if the reported value exceeds or falls below the appropriate value. Note when doing so that the change applies not only to the concrete monitoring tree element (MTE), but for the whole MTE class. This is displayed at the top of the screen.
You have the option to assign different threshold values for a Change from GREEN to YELLOW and the Reset from YELLOW to GREEN (the same also applies for the Change from YELLOW to RED and the Reset from RED to YELLOW). This prevents a constant switching between the alert levels, if the attribute is wavering around the threshold value, which would generate a new alert every time.
The display of a rule of this type would look as shown in the graphic below. To find out the alert level, start from any value for the performance attribute and move upwards until you meet the curve. If the value is climbing from a lower alert level, the lower part of the curve is valid for determining the alert; if the value is falling from a higher alert level, the upper part of the curve is used.

The unit of the threshold value is determined using the data supplier.
Explanation for an Alert
If an alert is triggered, it is displayed in the Alert Browser. A short explanatory text for the alert is displayed there in the Alert Text column. Choose the relevant line of an alert and choose F1 to display a more detailed text about the alert. The system displays its short text and the associated message class and number here. You can use these to adjust the delivered message texts.
Labels: Alert Monitor(CCMS) in SAP
Use
Status attributes (symbol
) are monitoring attributes that report error message texts and alert status.
Features
Status attributes have a number of special characteristics in the display of properties and methods. To display the properties of a status attribute, choose the attribute in the alert monitoring tree and choose Properties.
When should a message trigger an alert?
- Always (at every message): The Alert Monitor triggers a alert with the corresponding message value for every message.
- Message value (color) has changed: The Alert Monitor only triggers an alert if the alert color of a reported message changes. For example, an alert is triggered if a red message follows a yellow message.
- The message sent has changed: The Alert Monitor only triggers an alert if the color or severity of a message changes or if a new message is sent.
- Never: The Alert Monitor does not trigger any alerts.
Changing the value for alert generation
You can control the generation of alerts by influencing the criticality reported with every status message. Note that each setting only applies to the selected monitoring attribute and not to the associated MTE class.
You have the following options:
- Accept value unchanged: Choose this option to use the value reported by the application for a message. The default value for the message remains unchanged. This is the default option for the Alert Monitor.
- Red is transferred as yellow: Choose this option to display all reported red messages as yellow alerts. This means that the Alert Monitor displays only yellow alerts. No red alert messages are logged.
- Yellow is transferred as red: Choose this option to display all reported yellow messages as red alerts. This means that the Alert Monitor displays only red alerts. All reported yellow messages are logged as red alerts.
- Red is transferred as yellow and yellow is transferred as green: Choose this option to reduce the weighting of the reported messages. The Alert Monitor displays incoming red messages as yellow alerts and incoming yellow messages as green alerts.
Labels: Alert Monitor(CCMS) in SAP
Tuesday, October 14, 2008
Dear Friend,
Today I'm going to share with you yet another useful tool, the Translation Widget. This widget is very up-to-date with the number of available languages, according to the Google Translate Frequently Asked Questions (FAQ)
This tool follows the list and code from the Google's translation page. Since we bloggers know what language we are in, there is no need for the source language. The neat thing about this widget is that it does not use any JavaScript code, yet it translates any post (not just your homepage) you are viewing to the target language, using the powerful expression syntax expr:value='data:blog.url'.
You can see it being installed on my blog. I am very hopeful that my blog will be even more popular to new non-english speaking visitors. I hope your blog will have some more traffic too, after installing this widget.
Again, to install this widget, all I ask from you is to keep the "Widget by Hoctro" text, so others can go to the source and install this widget on their blogs.
Add the code below to the widget list, from the Layout->HTML short form, following the instructions from this article Hacking Technique: How To Modify and add Widget to the Template, in particular section B.4.
<b:widget id='HTML200' locked='false' title='Translate to your Language' type='HTML'>
<b:includable id='main'>
<!-- Translation Widget by Hoctro - 10/2008 - This note must not be deleted -->
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<form action='http://translate.google.com/translate_c?'>
<table id='webtb'>
<tr><td> <select name='tl' style='width: 8em;'>
<option value='ar'>Arabic</option>
<option value='bg'>Bulgarian</option>
<option value='ca'>Catalan</option>
<option value='zh-cn'>Chinese (Simplified)</option>
<option value='zh-tw'>Chinese (Traditional)</option>
<option value='hr'>Croatian</option>
<option value='cs'>Czech</option>
<option value='da'>Danish</option>
<option value='nl'>Dutch</option>
<option value='en'>English</option>
<option value='tl'>Filipino</option>
<option value='fi'>Finnish</option>
<option value='fr'>French</option>
<option value='de'>German</option>
<option value='el'>Greek</option>
<option value='iw'>Hebrew</option>
<option value='hi'>Hindi</option>
<option value='id'>Indonesian</option>
<option value='it'>Italian</option>
<option value='ja'>Japanese</option>
<option value='ko'>Korean</option>
<option value='lv'>Latvian</option>
<option value='lt'>Lithuanian</option>
<option value='no'>Norwegian</option>
<option value='pl'>Polish</option>
<option value='pt'>Portuguese</option>
<option value='ro'>Romanian</option>
<option value='ru'>Russian</option>
<option value='sr'>Serbian</option>
<option value='sk'>Slovak</option>
<option value='sl'>Slovenian</option>
<option value='es'>Spanish</option>
<option value='sv'>Swedish</option>
<option value='uk'>Ukrainian</option>
<option selected='vi' value='vi'>Vietnamese</option>
</select>
<input expr:value='data:blog.url' id='url' name='u' type='hidden'/>
<input name='sl' type='hidden' value='en'/>
<input name='hl' type='hidden' value='en'/>
<input name='ie' type='hidden' value='UTF-8'/>
<input style='width: auto;' type='submit' value='Go'/>
</td></tr></table></form>
<h6>Widget by <u><a href='http://hoctro.blogspot.com/2008/10/new-translation-widget.html'>Hoctro</a></u></h6>
</div>
<b:include name='quickedit'/>
</b:includable>
</b:widget>
This line below contains the source language. Since I'm writing this blog in English, my source initial is en. You must change to your source language initial from the the widget code above.
<input name='sl' type='hidden' value='en'/>
This line below contains the preferred target language. Since I am a "constructive" lazy kind of guy, my preferred target language is Vietnamese vi. You must change this to your preferred target language, such as French ('fr').
<option selected='vi' value='vi'>Vietnamese</option>
Also, change the word "Go" to your language:
<input style='width: auto;' type='submit' value='Go'/>
One last thing. If you don't want part of your text to be translated, add the class='notranslate' to the tag around it, such as this example below:
<span class='notranslate'>This text won't be translated.</span>
Until next time.
Hoctro
10/14/08
Labels: Widgets
Saturday, October 11, 2008
Translation Widget: Translating your current post right inside your blog!
0 comments Posted by xarenina at 1:28 PMDear Friend,
I come across a tutorial on one of the many Google API documentations showing how to add translated text to the same web page. Google also announces very recently that they support more languages for pair translation, Vietnamese included. I'm really glad this is happenning, because I've been jealous with some other languages which enjoy free language translation services for years.
In this post, I will show you how I make the translation available on my blog.
I hope you will be inspired to do the same thing on your blog. If you come up with any other ideas on how to use the Translation API, please post them here as well.
Here are two simple steps to install the widget:
1. Follow the instructions from this article Hacking Technique: How To Modify and add Widget to the Template, in particular section B.4. Make sure the variable var toLang="vi"; shows your target language (in my case "vi" for Vietnamese, you can see all the available languages here: Languages Enum ):
<b:includable id='main'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
<div id='translation' style='font-style:italic;color:navy'/>
<h6>Widget by <u><a href='http://hoctro.blogspot.com/2008/10/transtation-widget-translating-your.html'>Hoctro</a></u></h6>
<script src='http://www.google.com/jsapi' type='text/javascript'/>
<script type='text/javascript'>
var fromLang="en";
var toLang="vi";
function transInit() {
var text = document.getElementById("bodytext").innerHTML;
google.language.translate(text, fromLang, toLang, function(result) {
if (!result.error) {
var container = document.getElementById("translation");
container.innerHTML = result.translation; }});
}
google.load("language", "1");
google.setOnLoadCallback(transInit);
</script>
</div>
<b:include name='quickedit'/>
</b:includable>
</b:widget>
2. On your new post, place this pair <div='bodytext'> and </div> around the text you want to tranlate into your favorite language.
If you are going to use this a lot, I suggest making it part of the template so you could have them at the start of a new post. In Settings->Formatting, add this code
Post something new and see if this works. I admit that even though my tutorial is not translating well into Vietnamese, it's much more than I ever wanted. I read the recently published book "Planet Google", the author Randall Stross states that Google uses the statitical machine translation method, using trillions of references to come up with the results. This explains why in certain languages such as French or Spanish, the quality of the translation is much higher than the less frequenly used languages on the net, since Google acquired and indexed far more statistical data for "the Algorithm" to draw from.
Until next time,
Hoctro
10/11/08
Labels: Widgets
Friday, October 10, 2008
New and Improved "Related Articles" Widget using the new Google's Ajax Feed API
0 comments Posted by xarenina at 11:52 PMDear Friend,
As far as I could tell, "Related Articles" Widget is my most successful hack I've done so far for the last two years on the internet. I have seen countless blogs employing this hack. Somebody even said that the hack leverages Blogger users to have the same capability as Wordpress users in that regards.
For this new and improved version, I use the more reliable Ajax Feed API from Google rather than using my own library code. Also, I have added code to eliminate redundant headlines so what you will see is a set of unique "related articles" headlines. I would like to thank Jackbook.com again to help improving the original hack. I've incorporated both fixes from him as well.
I'm going to show you how to add this "Related Articles Widget" to your blog, with just three simple steps!. If you're already installed either one or both of the earlier "Blog List" or the "Latest Posts" Ajax Feed widgets, you can skip step 1 and 2, and just simply cut-and-paste the code from step 3 to your template!
Before installing, All I ask for is that you must keep the credit Widget by Hoctro, and not to get rid of it. After all, I spent lots of my personal time on weekends to write these widgets. I'm not asking for money, just a little recognition, so others will know where the widget comes from, and could install it too by following the link. Not including my credit on your blog is also a form of plagiarism, and I don't think you want your readers to label your blog as such.
1. Get the key from Google:
http://code.google.com/apis/ajaxfeeds/signup.html
2. Follow the instructions from this article Hacking Technique: How To Modify and add Widget to the Template, in particular section C.1, and add this CSS style code to the header, right in front of the </head> tag. Remember to replace YOUR-KEY text with the new key.

<script src='http://www.google.com/jsapi/?key=YOUR-KEY' type='text/javascript'/>
<script src='http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.js' type='text/javascript'/>
3. Add this code to the widget list, from the Layout->HTML short form, following the instructions from this article Hacking Technique: How To Modify and add Widget to the Template, in particular section B.4.
<b:widget id='Blog3' locked='false' title='Blog Posts' type='Blog'>
<b:includable id='nextprev'>
</b:includable>
<b:includable id='backlinks' var='post'>
</b:includable>
<b:includable id='post' var='post'>
</b:includable>
<b:includable id='commentDeleteIcon' var='comment'>
</b:includable>
<b:includable id='status-message'>
</b:includable>
<b:includable id='feedLinks'>
</b:includable>
<b:includable id='comment-form' var='post'>
<div class='comment-form'>
<a name='comment-form'/>
<h4 id='comment-post-message'><data:postCommentMsg/></h4>
<p><data:blogCommentMessage/></p>
<a expr:href='data:post.commentFormIframeSrc' id='comment-editor-src' style='display: none'/>
<iframe allowtransparency='true' class='blogger-iframe-colorize' frameborder='0' height='275' id='comment-editor' scrolling='auto' src='' width='100%'/>
<data:post.iframeColorizer/>
</div>
</b:includable>
<b:includable id='backlinkDeleteIcon' var='backlink'>
</b:includable>
<b:includable id='feedLinksBody' var='links'>
</b:includable>
<b:includable id='postQuickEdit' var='post'>
</b:includable>
<b:includable id='comments' var='post'>
</b:includable>
<b:includable id='main'>
<!-- *****************http://hoctro.blogspot.com*****Oct,2008********** -->
<!-- ***Related Articles by Labels Written by Hoctro- Take Four******* -->
<!--<b:if cond='data:blog.pageType == "item"'>-->
<div class='widget-content'>
<h5>Related Articles</h5>
<div id='data2007'/><br/><br/>
<h6>Related Article Widget by <u><a href='http://hoctro.blogspot.com/2008/10/new-and-improved-related-articles.html'>Hoctro</a></u></h6>
<script type='text/javascript'>
// Incorporating modified by Jackbook to the next line, thank you very much.
var homeUrl = "<data:blog.homepageUrl/>";
var maxNumberOfPostsPerLabel = 8;
var maxNumberOfLabels = 10;
var urlArray = new Array();
<b:if cond='data:blog.pageType == "item"'>
maxNumberOfPostsPerLabel = 15;
</b:if>
<b:if cond='data:blog.pageType == "item"'>
maxNumberOfLabels = 4;
</b:if>
var titleArray = new Array();
var titleTest = 0;
function relInitialize() {
var labelArray = new Array();
var numLabel = 0;
<b:loop values='data:posts' var='post'>
<b:loop values='data:post.labels' var='label'>
textLabel = "<data:label.name/>";
var test = 0;
// Do not add identical labels from posts
for (var i = 0; i < labelArray.length; i++)
if (labelArray[i] == textLabel) test = 1;
if (test == 0) {
labelArray.push(textLabel);
var maxLabels = (labelArray.length <= maxNumberOfLabels) ?
labelArray.length : maxNumberOfLabels;
if (numLabel < maxLabels) {
var url = homeUrl + 'feeds/posts/default/-/'
+ encodeURIComponent(textLabel);
var feed = new google.feeds.Feed(url);
feed.setNumEntries(maxNumberOfPostsPerLabel);
feed.load(function(result) {
if (!result.error) {
var container = document.getElementById("data2007");
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
titleTest = 0;
for (var i = 0; i < titleArray.length; i++)
if ( titleArray[i] == entry["title"] ) titleTest = 1;
if (titleTest == 0 ) {
titleArray.push(entry["title"]);
var div = document.createElement('div');
var a = document.createElement('a');
a.href = entry["link"];
// Adding an if statement to exclude current post.
// Addition from Jackbook.com. Thank you
if( a.href!=location.href ) {
var txt = document.createTextNode(entry["title"]);
a.appendChild(txt);
div.appendChild(a);
container.appendChild(div);
} // if not home page
}// if titleTest
} // for
}// if result is not error
}); // feed.load
numLabel++;
}
}
</b:loop>
</b:loop>
}
google.load("feeds", "1");
google.setOnLoadCallback(relInitialize);
</script>
</div>
<!--</b:if>-->
</b:includable>
</b:widget>
We're done! I have installed the new widget on my blog already for you to see.
Important features & notes:
1. To set the maximum of headlines per label, change the number on this line (right now it's 4.)
var maxNumberOfPostsPerLabel = 4;
2. To set the maximum of labels, change the number on this line (right now it's 10.)
var maxNumberOfLabels = 10;
My experience using Labels is that you should try to minimize down each post to just two labels only, then in conjunction with the maxNumberOfPostsPerLabel you will get your list to look more effective.
Until next time,
Hoctro.
Update:
08 Jan 09: Happy New Year to my readers! Hajunik.com puts together a tutorial on how to add more formatting to the hack. It does look inpressive and seamlessly integrated into his blog theme. Please take a look at the tutorial at Ajax Related Posts widget for Blogger





